美文网首页
程序设计-求最大公因数

程序设计-求最大公因数

作者: 坠入莱茵河 | 来源:发表于2021-05-09 18:17 被阅读0次

    程序设计-求最大公因数

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

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

    即,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
    

    相关文章

      网友评论

          本文标题:程序设计-求最大公因数

          本文链接:https://www.haomeiwen.com/subject/gkkvdltx.html