程序设计-求最大公因数

程序设计-求最大公因数

本文使用欧几里得算法来求最大公因数

最大公因数:能够同时整除两个整数的最大整数。

即,15和35的最大公因数为5。因为15 = 3 x 5 35 = 7 x 5 = 35 它们能够同时被5整除

欧几里得算法:又称辗转相除法,通过对两数连续应用带余除数,每一步的除数和被除数都是上一步的除数和余数而来。运算知道余数为0停止。 最大公因数为最后一个非0余数
例:使用欧几里得算法求(36, 81)得最大公因数

81 = 2 * 36 + 9      (9, 36)
36 = 4 * 9  + 0      (0, 9)

此时余数为0 除数为9 则(36,81)得最大公因数为9.

程序设计

1⃣️ 计算余数和除数
大数除小数得余 去放到下一层计算

if (a > b) {
  return gcd(a % b, b);
} else {
  return gcd(b % a, a);
}

2⃣️ 确定终止条件
其中一个为0,则返回另一个 此数则为最大公因数

  if (a == 0) return b
  if (b == 0) return a

代码实现

/**
 * @method gcd 求最大公因数
 * @params { number } 整数a
 * @params { number } 整数b
 * @return { number } 最大公因数
 **/
let gcd = (a, b) => {
  if (a == 0) return b
  if (b == 0) return a
  if (a > b) {
    return gcd(a % b, b);
  } else {
    return gcd(b % a, a);
  }
}

console.log(gcd(102, 999)) // 3

你可能感兴趣的:(程序设计-求最大公因数)