最大公约数算法原理及JAVA实现
辗转相除法原理
取两个数中最大的数做除数,较小的数做被除数,用最大的数除较小数,如果余数为0,则较小数为这两个数的最大公约数,如果余数不为0,用较小数除上一步计算出的余数,直到余数为0,则这两个数的最大公约数为上一步的余数。
JAVA实现
int gdc(int a, int b) {
if (b == 0) return a;
return gdc(b, a%b);
}
注意,当a >= b时,递归的下一步是:用较小数除上一步计算出的余数。
当a < b时,递归的下一步则相当于将a, b交换位置。