0

我有以下代码来查找从 2 到 1000 的素数:

#!/usr/bin/env node

var primesarray = function(n) {
    var nums = [];
    for (var i = 0; i < n; i++) {
        nums.push("1");
    }

    return nums;
};

var primes = function(arr) {
    var i = 2;
    var primes = [];
    for (i = 2; i < arr.length - 1; i++) {
        if (arr[i] === "1")
            primes.push(i);
        for (j = 2; Math.pow(i, j) < arr.length - 1; j++ ) {
            arr[Math.pow(i,j)] = "0";
        }
    }
    return primes;
};

// Print to console
var fmt = function(arr) {
    return arr.join(",");
};

var k = 1000;
console.log("primes(" + k + ")");
console.log(fmt(primes(k)));

当我运行该文件时,它只打印第一个 console.log 行。我没有看到这里有什么问题。

4

2 回答 2

4

该函数primes被编写为期望一个数组,但您传递给它一个整数。

你的意思是fmt(primes(primesarray(k)))

(这至少打印了一个数字列表,但恐怕其中很多都不是素数!)

于 2013-06-26T21:39:51.973 回答
1

你需要为的数组做准备;)

var arr = primesarray(k)

像这样

var k = 1000;
var arr = primesarray(k)
console.log(primes(arr));
console.log(fmt(primes(arr)));

演示

一些实际的解决方案:http: //www.codecademy.com/forum_questions/5033d10f77955e0002004142

于 2013-06-26T21:44:01.630 回答