ユークリッドの拡張アルゴリズムに問題があります。 (ax + by = gcd(a、b))私はGCDとxとyの両方を決定しようとしています。 GCDは問題ではありませんが、ループメソッドを使用すると、xとyに問題が起こります。通常、1つの数字は0になり、もう1つは異常に大きな負の数字になります。コードは次のとおりです。ユークリッドの拡張アルゴリズムC++
はあなたの割り当ての#include <iostream>
using namespace std;
main()
{
int a,b,q,x,lastx,y,lasty,temp,temp1,temp2,temp3;
cout << "Please input a" << endl;
cin >> a;
cout << "Please input b" << endl;
cin >> b;
if (b>a) {//we switch them
temp=a; a=b; b=temp;
}
//begin function
x=0;
y=1;
lastx=1;
lasty=0;
while (b!=0) {
q= a/b;
temp1= a%b;
a=b;
b=temp1;
temp2=x-q*x;
x=lastx-q*x;
lastx=temp2;
temp3=y-q*y;
y=lasty-q*y;
lasty=temp3;
}
cout << "gcd" << a << endl;
cout << "x=" << lastx << endl;
cout << "y=" << lasty << endl;
return 0;
}
はそんなにありがとう=! – user1735851