JS 求兩個正數的最簡整數比

解題思路:

1、輾轉相除法: 取兩個數中較大的數做被除數, 較小的數爲除數; 用較大的數去除以較小的數,若餘數爲0,則較小數就是這兩個數的最大公約數;如果不爲0,則用除數去除以上一步計算出的餘數, 直到餘數爲0,則這兩個數的最大公約數爲上一步的餘數。

代碼實現:

// m > n
function calcGCD(m, n) {
   //求最大公約數
   let u = m;
   let v = n;
   while (v != 0) {
       [u, v] = [v, u % v];
   }
   return u;
}

2、相減法: 取兩個數中較大的數做被減數, 較小的數爲減數; 用較大的數去減去較小的數,若差爲0,則較小數就是這兩個數的最大公約數;如果不爲0,用減數和上一步計算出的差中較大值減去較小值, 直到差爲0,則這兩個數的最大公約數爲最後一次的減數。

// m > n
function calcGCD(m, n) {
   //求最大公約數
   let u = m;
   let v = n;
   let diff = v;
   while (u - v != 0) {
        if ( u -v < v) {
            [u, v] = [ v, u - v];
        } else {
            [u, v] = [u - v, v];
        }
   }
   return v;
}

 

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