我想使用欧几里德算法计算值数组的最小公倍数
我正在使用这个伪代码实现:发现于维基百科 https://en.wikipedia.org/wiki/Euclidean_algorithm
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]);
我的 while 循环出现错误
无限循环
EDIT进行了一些更正,在 gcm 函数的末尾,我使用 0 作为初始值,它应该是 1,因为你不能从 0 开始得到 gcm。
EDIT2预期输出应该是 60,因为这是 1,2,3,4,5 的最小公倍数