在线模板_欧几里得及扩展欧几里得算法
朴素欧几里得
朴素欧几里得算法模板
int gcd(int a,int b){
if (b==0){
return a;
}
return gcd(b,a%b);
}
扩展欧几里得
对于不完全为 0 的非负整数 a,b,
gcd(a,b)表示 a,b 的最大公约数,
必然存在整数对 x,y ,
使得 gcd(a,b)=ax+by
扩展欧几里得算法模板
int exgcd(int a,int b,int &x,int &y){
if (b==0){
x=1,y=0;
return a;
}
int q=gcd(b,a%b,y,x);
y-=a/b*x;
return q;
}