gpt4 book ai didi

javascript - 使用欧几里德算法的数组值的最小公倍数

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:11:08 25 4
gpt4 key购买 nike

我想使用欧氏算法计算值数组的最小公倍数

我正在使用这个伪代码实现:在 wikipedia 上找到

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 上遇到错误

Infinite loop

编辑 进行了一些更正,在 gcm 函数的末尾,我使用 0 作为初始起始值,它应该是 1,因为你不能从 0 开始 gcm。

EDIT2 预期的输出应该是 60,因为那是 1,2,3,4,5 的最小公倍数

最佳答案

使用 ES6

const gcd = (a, b) => a ? gcd(b % a, a) : b;

const lcm = (a, b) => a * b / gcd(a, b);

然后对给定的整数数组使用 reduce:

[1, 2, 3, 4, 5].reduce(lcm); // Returns 60

使用 ES5

var gcd = function (a, b) {
return a ? gcd(b % a, a) : b;
}

var lcm = function (a, b) {
return a * b / gcd(a, b);
}

然后对给定的整数数组使用 reduce:

[1, 2, 3, 4, 5].reduce(lcm); // Returns 60

关于javascript - 使用欧几里德算法的数组值的最小公倍数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47047682/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com