1.欧几里德算法
int gcd(int x,int y)
{
return y?gcd(y,x%y):x;
}
(注:不用比较大小)
2.扩展欧几里德算法
定理:对于任意整数a,b,都存在一组整数x、y使得ax+by=gcd(a,b)成立 (当且仅当gcd(a,b)|c时,方程有整数解)
int exgcd(int a,int b,int &x,int &y)
{
if(!b){
x=1;y=0;return a;
}
int t,d;
d=exgcd(b,a%b,x,y);
t=x;x=y;y=t-a/b*y;
return d;
}