Ricko
Brain
Dołączył: 07 Sie 2006
Posty: 3255
Przeczytał: 0 tematów
Pomógł: 5 razy Ostrzeżeń: 0/5 Skąd: ..::Zabrze::..
|
Wysłany: Nie 12:20, 24 Kwi 2011 Temat postu: C++ Rozszerzony Euklides + Równanie Diofantyczne |
|
|
Rozszerzony Algorytm Euklidesa + Równanie Liniowe Diofantyczne
Źródło: Praca własna na podstawie pseudokodu i informacji z internetu dotyczących funkcjonowania algorytmu
Cytat: |
#include<iostream>
using namespace std;
int main () {
int a,b,d,r1,r2;
float u,v,u1,u2,q,p1,p2;
cout<<"POBIERANIE DANYCH"<<endl<<"Podaj dwie liczby, z ktorych chcesz wyliczyc NWD"<<endl;
cin>>a>>b;
cout<<endl<<"WYKONYWANIE PROGRAMU"<<endl;
u1=1;
r1=a;
u2=0;
r2=b;
while (r2>0)
{
q=r1/r2;
p1=u1; //zmienna pomocnicza dla u//
u1=u2;
p2=r1; //zmienna pomocnicza dla r//
r1=r2;
u2=p1-q*u2;
r2=p2-q*r2;
}
d=r1;
u=u1;
v=(r1-u1*a)/b;
cout<<"NWD wynosi "<<d<<endl<<"u i v wynosza "<<u<<" "<<v<<endl<<endl<<"ZAKONCZONO DZIALANIE ROZSZERZONEGO ALGORYTMU EUKLIDESA"<<endl;
system("pause");
cout<<endl<<"ROWNANIE LINIOWE DIOFANTYCZNE"<<endl;
int c,t,x,y;
cout<<"Podaj c"<<endl;
cout<<"c= ";
cin>>c;
cout<<"Podaj wspolczynnik t"<<endl;
cout<<"t= ";
cin>>t;
if (c%d==0)
{
x=((c*u)/d)+(t*(b/d));
y=((c*v)/d)-(t*(a/d));
cout<<"X wynosi: "<<x<<", Y wynosi: "<<y<<endl;
}
else
cout<<endl<<"Brak rozwiazan"<<endl<<endl;
system("pause");
return 0;
} |
Post został pochwalony 0 razy
|
|