我有一个简单的方法:
public int gcd(int a, int b) {
while (a!=b) {
int q = b;
b = a%b;
a = q;
}
return a;
}
有没有更简单的方法来写出最大的共同点?特别是while循环中的三行可以简化吗?
答案 0 :(得分:2)
如果您不介意性能而只是可读性,那么请选择其他方法:
public int gcd(int a, int b) {
BigInteger ba = BigInteger.valueOf(a);
BigInteger bb = BigInteger.valueOf(b);
return ba.gcd(bb).intValue();
}
答案 1 :(得分:1)
试试这个:
public static int gcd(int a, int b) {
int q = b;
b = a % b;
a = q;
return (a != b && a != 0 && b != 0) ? gcd(a, b) : a - b;
}