为什么这个循环会在中途终止?

3

我正在尝试编写一个程序,以找到可以被提供参数均匀地整除的最小公倍数,且也可以被这些参数之间所有连续数字整除。

范围将是一个包含两个数字的数组,这两个数字不一定按数字顺序排序。

例如,对于1和3,找到既可以被1和3整除,又可以被1和3之间所有数字整除的最小公倍数。

为什么循环在i = 510,000(或接近该数值)处停止,而不是像我设置的那样在7,000,000处停止?

我还有一张带有输出结果的截图:

function smallestCommons(arr) {
  
  var start;
  var finish;
  var something;
  
  if(arr[0] < arr[1]){start = arr[0]; finish = arr[1];}else{
      start = arr[1]; finish = arr[0];
    }
  
  for(var i = finish;i <= 7000000;i++){
    var boolea = true;
    for(var j = start;j <= finish;j++){
      if(i % j !== 0){boolea = false;break;} // 2 % 1
    }
    
    if(boolea)return i;
    
    something = i;
  }
  
  console.log("final i = " + i);
  
  return 0;
}


你的调试器告诉你什么? - Scott Hunter
2
请尝试使用 https://jsbin.com/blog/protection#loopprotection 来检查 jsbin 是否强制使您的代码从循环中退出。 - Gonzalo.-
谢谢你,@Gonzalo.-.。那个有效。 - Narcis Neacsu
所以我只需要在for循环的开头下面加上//noprotect,它就会按照预期一直迭代到结束。 - Narcis Neacsu
@NarcisNeacsu 如果这个回答对您有帮助,请考虑给它点赞或将其设置为已接受的答案。 - Gonzalo.-
显示剩余2条评论
1个回答

2
尝试在循环开始处添加以下内容:
// noprotect

可能是jsbin强制使您的代码退出了循环。请参见源代码


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接