[编辑]
我应该澄清一下,我正在尝试找到一系列数字的最小公倍数。对于那个很抱歉。我尝试了另一种解决方案,但在最后一个数组 [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/