欧几里得算法
求最大公约数,可以在导入 #include 下直接使用 __gcd(x, y) 。
也可以自己写,注意有的时候可能要使用 long long。
int gcd(int a,int b)
{
if(b==0) return a;
else return gcd(b,a%b);
}
拓展欧几里得算法
求 ax + by = gcd 的解以及逆元
返回 ans = gcd(a, b) 和 对应于等式 ax + by = d 中的 x, y
代码实现
int exgcd(int a,int b,int &x,int &y)
{
if(b==1)
{
x=1;
y=0;
return a;
}
int ans=exgcd(b,a%b,x,y);
int temp=x;
x=y;
y=temp-a/b*y;
return ans;
}