Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么这种对埃拉托斯坦筛的实施是不正确的?_Javascript_Algorithm_Sieve Of Eratosthenes - Fatal编程技术网

Javascript 为什么这种对埃拉托斯坦筛的实施是不正确的?

Javascript 为什么这种对埃拉托斯坦筛的实施是不正确的?,javascript,algorithm,sieve-of-eratosthenes,Javascript,Algorithm,Sieve Of Eratosthenes,目标是找到num之前所有素数的总和。我在另一篇文章中看到了相同的实现,但它也不起作用: 然而,那里的解决方案也不正确,当我用977尝试它时,它返回72179,但它应该是73156 const sumPrimes = num => { var numList = []; var output = []; for (var i = 0; i < num; i++) { numList.push(true); } for (var

目标是找到num之前所有素数的总和。我在另一篇文章中看到了相同的实现,但它也不起作用:

然而,那里的解决方案也不正确,当我用977尝试它时,它返回72179,但它应该是73156

const sumPrimes = num => {
    var numList = [];
    var output = [];
    for (var i = 0; i < num; i++) {
        numList.push(true);
    }

    for (var i = 2; i <= Math.sqrt(num); i++) {
        if (numList[i]) {
            for (var j = i * i; j < num; j += i) {
                numList[j] = false;
            }
        }
    }

    for (var k = 2; k < num; k++) {
        if (numList[k]) {
            output.push(k);
        }
    }
    var sum = output.reduce((acc, cur) => acc + cur, 0);
    console.log(output);
    return sum;
};
const sumPrimes=num=>{
var numList=[];
var输出=[];
对于(变量i=0;i

伪代码来自:

您的代码没有问题。它返回小于
num
的素数之和,小于977的素数之和为72179。您期望的答案73156是小于或等于977的素数之和。差是977,因为977是素数