「更相减损法」和「欧几里得算法」
欧几里得算法
public int gcd(int a,int b){
if(a%b==0) return b;
return gcd(b,a%b);
}
//a大于b。a和b的最大公约数就是b和a%b的最大公约数,直到a能被b整除,b就是最大公约数。
int gcd(int a, int b) { // 欧几里得算法
return b == 0 ? a : gcd(b, a % b);
}
更相减损法
int gcd(int a, int b) { // 更相减损法
while (true) {
if (a > b) a -= b;
else if (a < b) b -= a;
else return a;
}
}