我们需要编写一个JavaScript函数,该函数接受任意长度的数字数组并返回其LCM。
我们将分部分解决这个问题-
第1部分-我们将创建一个辅助函数来计算两个数字的最大公约数(GCD)
第2部分-然后使用第1部分的辅助函数,我们将创建另一个辅助函数来计算两个数字的最小公倍数(LCM)。
第3部分-最后,使用第2部分helper函数,我们将创建一个遍历数组并计算数组LCM的函数。
为此的代码将是-
const calculateLCM = (...arr) => {
const gcd2 = (a, b) => {
//2个整数的最大公约数
if(!b) return b===0 ? a : NaN;
return gcd2(b, a%b);
};
const lcm2 = (a, b) => {
//2个整数的最小公倍数
return a * b / gcd2(a, b);
}
//整数列表的最小公倍数
let n = 1;
for(let i = 0; i < arr.length; ++i){
n = lcm2(arr[i], n);
}
return n;
};
console.log(calculateLCM(12, 18, 7, 15, 20, 24, 28));输出结果
控制台中的输出将是-
2520