1.普通辗转相除法求最大公约数
int gcd(int a,int b)
{
if(b==0) return a;
return gcd(b,a%b);
}
2.扩展欧几里得算法
求整数x和y使得ax+by=1
可以发现如果gcd(a,b)!=1;无解
如果gcd(a,b)==1,就可以用扩展欧几里得算法来求解:即ax+by=gcd(a,b),
设int extgcd(int a ,int b,int &x,int &y)是求解方程的函数,其返回值是gcd(a,b).与gcd一样,我们可以递归定义extgcd。
:欧几里德算法停止的状态是: a= gcd , b = 0 ,那么,这是否能给我们求解 x y 提供一种思路呢?因为,这时候,只要 a = gcd 的系数是 1 ,那么只要 b 的系数是 0 或者其他值(无所谓是多少,反正任何数乘以 0 都等于 0 但是a 的系数一定要是 1&#x