4

ユークリッド アルゴリズムを使用して、値の配列の最小公倍数を計算したい

私はこの疑似コードの実装を使用しています:ウィキペディアにあります

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 になるはずです。

4

2 に答える 2