写一个最大公约数gcd和最小公倍数lcm和扩展欧几里得exgcd的比较简单的模板
int gcd(int a,int b){
return b?gcd(b,a%b):a;
}
int lcm(int a,int b){
return a/gcd(a,b)*b;
}
int exgcd(int a,int b,int &x,int &y){//ax+by = gcd(a,b);(1)
if(b == 0){
x = 1;y = 0;
return a;
}
int c = exgcd(b,a%b,y,x);//转化为b*x2+(a%b)*y2 = gcd(b,a%b) = gcd(a,b);(2)
//(2)式与(1)相等,则x = y2,y = x2-[a/b]*y2;迭代回去
y = y-a/b*x;
return c;
}