介绍
欧几里得算法,又称辗转相除法,用于计算两个整数的最大公约数。
原理
下面通过一个例子介绍其原理:计算105和24的最大公约数:
105 = 24 x 4 + 9
24 = 9 * 2 + 6
9 = 6 * 1 + 3
6 = 3 * 2 + 0
当余数为0时,可得到最大公约数。105和24的最大公约数是3.
代码实现
递归版本:
public static int gcd (int p, int q) {
if (q == 0) return p;
else return gcd (q, p%q);
}
循环版本:
public static int gcdLoop (int p, int q) {
while (q != 0) {
int rem = p % q;
p = q;
q = rem;
}
return p;
}