欧几里德算法又称辗转相除法,是指用于计算两个正整数a,b的最大公约数。

计算105和24的最大公约数:
105 = 24 x 4 + 9
24 = 9 2 + 6
9 = 6
1 + 3
6 = 3 * 2 + 0
当余数为0时,可得到最大公约数。105和24的最大公约数是3.

代码实现

递归版本:

  1. public static int gcd (int p, int q) {
  2. if (q == 0) return p;
  3. else return gcd (q, p%q);
  4. }

迭代

  1. public static int gcdLoop (int p, int q) {
  2. while (q != 0) {
  3. int rem = p % q;
  4. p = q;
  5. q = rem;
  6. }
  7. return p;
  8. }