js 最大公約數 最小公倍數

1. 兩個數的最大公因數

// 求兩個數的最大公約數 輾轉相除法
    // 最壞的結果 兩個數的最大公約數是1
    function gcd (a, b) {
      if (b === 0) {
        return a
      } else {
        return arguments.callee(b, a%b) // 餘數
      }
    }

輾轉相除法原理:https://blog.csdn.net/weixin_43886797/article/details/85569998

2. 多個數的最大公因數

先求前兩個數的最大公因數,再把前兩項替換成兩個數的最大公因數,接着和第三項求,以此類推

// 求兩個數的最大公約數 輾轉相除法
    // 最壞的結果 兩個數的最大公約數是1
    function gcd (a, b) {
      if (b === 0) {
        return a
      } else {
        return arguments.callee(b, a%b) // 餘數
      }
    }
    function moreGcd (arr) {
      // 循環結束 數組只剩一個元素
      while (arr.length > 1) {
        var TwoNumberGcd = gcd(arr[0], arr[1]) // 前兩個數的最大公因數
        arr.splice(0, 2, TwoNumberGcd) // 替換
      }
      // 返回這一個元素
      return arr[0]
    }

3. 兩個數的最小公倍數:

兩個數的乘積除以最大公因數

function maxTimes (a, b) {
      return a * b / gcd(a, b);
}

4. 多個數的最大公倍數:

前兩個的乘積/ 最大公約數 , 結果替換前兩個 以此類推。。。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章