当前位置:  开发笔记 > 编程语言 > 正文

编写生成素数的JavaScript函数,为什么有些数字被排除在循环之外?

如何解决《编写生成素数的JavaScript函数,为什么有些数字被排除在循环之外?》经验,为你挑选了1个好方法。

我写了这个函数,为给定的数字范围生成素数,我认为必须给出预期的结果是简单明了的,但是,有些数字被排除在结果之外:

function numberator(from, to) {
    numbers = [];
    for (x = from; x <= to; x++) {
        numbers.push(x);
    }
    return numbers;
}

function primeNumbers(array) {
    for (i = 0; i < array.length; i++) {
        for (j = 2; j < array[i]; j++) {
            if (array[i] % j == 0) {
                array.splice(i, 1);
            }
        }
    }
    return array;
}

console.log(primeNumbers(numberator(1,100)));

结果包含:27,35和95(也是1,我可以稍后处理.)

我试图找出原因,但我不能.



1> Amit Kumar..:

该错误是使用splice 对数组进行就地修改.你继续增加i,而数组的大小在执行时被修改.

您可以通过在每个切片操作后打印整个数组来调试它.

此外,该解决方案效率非常低,并且对于稍长的范围将表现非常差.使用Eratosthenes筛选

推荐阅读
Life一切安好
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有