在 JavaScript 中计算多个数字的 LCM

javascriptweb developmentfront end technologyobject oriented programming

我们需要编写一个 JavaScript 函数,该函数接受任意长度的数字数组并返回它们的 LCM。

我们将分部分解决这个问题 −

第 1 部分 − 我们将创建一个辅助函数来计算两个数字的最大公约数 (GCD)

第 2 部分 − 然后使用第 1 部分辅助函数,我们将创建另一个辅助函数来计算两个数字的最小公倍数 (LCM)。

第 3 部分 −最后,使用第 2 部分的辅助函数,我们将创建一个循环遍历数组并计算数组 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

相关文章