返回的第一个是a和b的gcd,第二个是x,第三个是y
java
static int[] extendGCD(int a,int b)
{
int[]c=new int[3];
if(b==0)
{
c[0]=a;
c[1]=1;
c[2]=0;
return c;
}
int[] t=extendGCD(b,a%b);
c[0]=t[0];
c[1]=t[2];
c[2]=t[1]-(a/b)*t[2];
return c;
}
c++
void gcd(int a, int b, int& d, int& x, int& y)
{
if(!b){ d = a; x = 1; y = 0; }
else
{
gcd(b, a%b, d, y, x);
y -= x*(a/b);
}
}
只求x和y的版本
void extendEuclid(int a, int b, int &x, int &y)
{
if(b == 0)
{
x = 1;
y = 0;
return;
}
extendEuclid(b, a % b, x, y);
int tmp = x;
x = y;
y = tmp - (a / b) * y;
}