ax+by=gcd(a,b)=gcd(b,a%b),ax+by=bx'+a%by'=bx'+(a-(a/b)*b)y'
=ay'+b(x'-(a/b)*y'
则x=y',y=(x'-(a/b)*y;
另外:b=0时,gcd(a,b)=a;此时x=1,y=0;,递归可求出一个解;
其他解如何求呢?ax+by=ax'+by' 则有a(x-x')=b(y'-y);
可得x-x'=b/gcd(a,b),y'-y=a/gcd(a,b)
即 x'=x-b/gcd(a,b);
y'=y+a/gcd(a,b);
int extended_euclid(int a,int b,int &x,int &y)
{
int gcd;
if(b==0)
{
x=1;
y=0;
return a;
}
gcd=extended_euclid(b,a%b,x,y);
int t=x;
x=y;
y=t-(a/b)*y;
return gcd;
}