欧几里得
主要用于求解两个数的公约数1
2
3int gcd(int a,int b){
return b==0?a:gcd(b,a%b);
}
拓展欧几里得
扩展欧几里得算法可以在求得a、b的最大公约数的同时,能找到整数x、y(其中一个很可能是负数)
1 | int gcdEx(int a, int b, int *x, int *y) |
1 | int gcdEx(int a,int b,int &d,int &x,int &y){ |
证明可参考
可以用来解不定方程
x0,y0 是一组特解,可以求得全部解
如果 gcd(a,b) mod c == 0 ,则该方程存在整数解,否则不存在整数解(可以应用到多维)