編寫一個程式來計算兩個數字的最小公倍數 JavaScript
我們需要編寫一個函式,該函式接受兩個數字並返回它們的最小公倍數。
最小公倍數 (LCM)
兩個數字 a 和 b 的最小公倍數是能被 a 和 b 整除的最小正整數。
例如 - 6 和 8 的 LCM 是 24,因為 24 是能被 6 和 8 整除的最小正整數。
計算 LCM 的方法
計算兩個數字 a 和 b 的 LCM 的眾多方法之一是將 a 和 b 的乘積除以能同時整除 a 和 b 的最大整數(也稱為最大公約數或 GCD)。
對於 6 和 8,它們的乘積是 48,能同時整除它們的最大的整數是 2,因此它們的 LCM 是 -
(6*8)/2 = 24
弄清楚了這些,現在讓我們進入編碼部分 -
示例
const lcm = (a, b) => { let min = Math.min(a, b); while(min >= 2){ if(a % min === 0 && b % min === 0){ return (a*b)/min; }; min--; }; return (a*b); }; console.log(lcm(6, 8)); console.log(lcm(16, 18)); console.log(lcm(0, 8)); console.log(lcm(11, 28)); console.log(lcm(18, 34));
理解程式碼
由於能同時精確整除這兩個數字的最大整數仍然小於或等於我們要計算 LCM 的兩個數字中較小的那個,因此我們從較小的數字一直遞減到 2 執行一個迴圈。
如果在我們的迭代中我們找到任何同時整除這兩個數字的數字,我們可以保證它是同時整除它們的最大的數字,因為我們處於遞減迴圈中,因此我們立即返回 LCM。
如果我們遍歷整個迴圈,這意味著我們沒有找到這樣的數字,而 1 是唯一同時整除它們的數字(換句話說,這兩個數字是互質的),因此我們只需返回它們的乘積。
輸出
控制檯中的輸出將是 -
24 144 0 308 306
廣告