我想使用欧几里得算法计算一组值的最小公倍数
我正在使用这个伪代码实现:在维基百科上找到
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 上出现错误
无限循环
编辑进行了一些更正,在 gcm 函数结束时,我使用 0 作为初始起始值,它应该是 1,因为你不能从 0 获得 gcm。
EDIT2预期的输出应该是 60,因为那是 1,2,3,4,5 的最小公倍数