/**
* 获取最大公约数(The greatest common divisor)
*
* 辗转相除法与更相减损法相结合
*/
public static Integer getGCD(Integer num1, Integer num2) {
if (num1.equals(num2)) {
return num1;
}
if (num1 < num2) {
return getGCD(num2, num1);
} else {
boolean num1IsEven = (num1 & 1) == 0;
boolean num2IsEven = (num2 & 1) == 0;
if (num1IsEven && num2IsEven)
return getGCD(num1 >> 1, num2 >> 1) << 1;
else if (num1IsEven)
return getGCD(num1 >> 1, num2);
else if (num2IsEven)
return getGCD(num1, num2 >> 1);
else
return getGCD(num2, num1 - num2);
}
}