欧几里得算法又称辗转相除法,用于计算两个正整数的最大公约数。
gcd(a,b) = gcd(b,a%b)
int gcd(int a, int b) {
return b? gcd(b, a % b) : a;
}
拓展欧几里得算法
void gcd(int a, int b, int &d, int &x, int &y){
if(!b) d = a, x = 1, y = 0;
else gcd(b, a % b, d, y, x),y -= x * (a / b);
}
来源:https://www.cnblogs.com/nioh/p/12219813.html