计算JavaScript中多个数字的LCM

我们需要编写一个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