最常见的倍数:我的代码出了什么问题?

时间:2017-06-23 18:46:05

标签: javascript algorithm lcm

Abc summer green jacket

我正在尝试为数组中的一系列数字找到最小公倍数。该代码适用于包含两个项目的数组,但是具有两个以上项目的数组的输出似乎超出了预期的值。 任何人都可以帮我找到我的代码中的错误吗?

谢谢

1 个答案:

答案 0 :(得分:2)

每次循环遍历数组元素时,将j设置回1。否则,当您处理下一个数字时,您将从高倍数开始。

// function that find the least common multiple
function lcm(arr) {
  arr = arr.sort(function(a, b) {
    return a - b;
  });
  var num = arr[0];
  for (i = 1; i < arr.length; i++) {
    var j = 1;
    while (num % arr[i] !== 0) {
      j = j + 1;
      num = j * arr[0];
    }
    arr[0] = num;
  }
  return num;
}

console.log(lcm([3, 5, 6, 10]));