ユークリッド アルゴリズムを使用して、値の配列の最小公倍数を計算したい
私はこの疑似コードの実装を使用しています:ウィキペディアにあります
function gcd(a, b)
while b ≠ 0
t := b;
b := a mod b;
a := t;
return a;
私のjavascriptの実装はそのようなものです
function smallestCommons(arr) {
var gcm = arr.reduce(function(a,b){
let minNum = Math.min(a,b);
let maxNum = Math.max(a,b);
var placeHolder = 0;
while(minNum!==0){
placeHolder = maxNum;
maxNum = minNum;
minNum = placeHolder%minNum;
}
return (a*b)/(minNum);
},1);
return gcm;
}
smallestCommons([1,2,3,4,5]);
whileloop でエラーが発生する
無限ループ
EDITいくつかの修正が行われました。gcm 関数の最後で、初期開始値として 0 を使用しました。0 から gcm を取得できないため、1 にする必要があります。
EDIT2 1,2,3,4,5 の最小公倍数であるため、予想される出力は 60 になるはずです。