javascript - 最小公倍数代码在一个数组上产生错误的答案

标签 javascript

[编辑]

我应该澄清一下,我正在尝试找到一系列数字的最小公倍数。对于那个很抱歉。我尝试了另一种解决方案,但在最后一个数组 [23, 18] 上仍然遇到了错误的答案。

function smallestCommons(arr) {
  arr = arr.sort(function (a, b) {  return a - b;  });

  var count = 1;

  for (var i = arr[0]; i <= arr[1]; i++) {
    if (count % i !== 0) {
      i = arr[0];
      count++;
    } 
  }

  return count;
}


smallestCommons([23,18]);

我的解决方案生成 2018940,而它应该是 6056820

最佳答案

你的无限循环是因为你的内部 for 循环从值 19 开始一直运行到 22

414 (smallestMultiple of 18 & 23) % 19 == 15
414 % 20 = 14
414 % 21 = 15
414 % 22 = 18

这会导致你的语句 if(count % i == 0) 为 false 并且你的 for 循环继续进行 415 416 ...

如果你想得到 最小公倍数

var isSmallestMultipe = 0;
while(isSmallestMultiple == 0)
{
   for(var i = 1; i <= arr[1]; i+)
   {
      if((arr[0]*i) % arr[1] == 0)
      {
         isSmallestMultiple = arr[0] * i;           
      }
   }
}

关于javascript - 最小公倍数代码在一个数组上产生错误的答案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45366922/

相关文章:

javascript - 如何监听 'props' 变化

javascript - 我可以打开一个未选择默认选项卡的新窗口(网页)吗

javascript - 使用 jQuery/JS 在全屏上查看所有选择选项

javascript - 为什么 Plunker 使用 AngularJS 时会出现 404 错误?

javascript - 在 span 中显示 var

javascript - 自定义 AddThis 按钮图标图形

javascript - 如何解决 Bootstrap 图像缩放?

javascript - 如何在 javascript 中调用 Controller 而不是 html Angular JS

javascript - jQuery 插件未定义,尽管已正确包含在我的 js 代码之前

javascript - 如何为html输入类型设置最大字符数和最小字符数