【FCC】Smallest Common Multiple求最小公倍数
生活随笔
收集整理的這篇文章主要介紹了
【FCC】Smallest Common Multiple求最小公倍数
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目:
找出能被兩個給定參數和它們之間的連續數字整除的最小公倍數。
范圍是兩個數字構成的數組,兩個數字不一定按數字順序排序。
例如對 1 和 3 —— 找出能被 1 和 3 和它們之間所有數字整除的最小公倍數。
思路:
這里涉及到經典算法:求最大公約數gcd(greatest common divisor)和最小公倍數scm(smallest common multiple)
gcd(最大公約數)算法過程(歐幾里德算法/輾轉相除法)
有兩整數a和b:
① a%b得余數c,即c=a%b
② 若c=0,則b即為兩數的最大公約數
③ 若c≠0,則a=b,b=c,再回去執行①
scm算法(最小公倍數算法)
最小公倍數=兩整數的乘積÷最大公約數,即scm=(a*b)/gcd(a,b)
代碼:
<script type="text/javascript">
function smallestCommons(arr) {
arr = arr.sort(function(a, b) {
return a - b;
});
console.log(arr);
//遞歸求最大公約數
function gcd(a, b) {
if (a % b === 0) {
return b;
} else {
return gcd(b, a % b);
}
}
//a,b的最小公倍數=a*b/(a和b的最大公約數)
var val = arr[0];
for (var i = arr[0] + 1; i <= arr[1]; i++) {
// console.log('val='+val+' i='+i);
// console.log('他們的最大公約數是:'+gcd(val,i));
val = val * i / gcd(val, i);
// console.log('求公倍數后 val='+val+' i='+i);
}
return val;
}
</script>
---------------------
作者:kimihiro_41
原文:https://blog.csdn.net/kimihiro_41/article/details/73740067
總結
以上是生活随笔為你收集整理的【FCC】Smallest Common Multiple求最小公倍数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【FCC】Sum All Primes求
- 下一篇: 【FCC】Drop it