我有以下代码来查找从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行。我没有看到这里有什么问题。
答案 0 :(得分:4)
函数primes
被编写为期望一个数组,但是你传递一个整数。
您的意思是fmt(primes(primesarray(k)))
吗?
(至少打印一个数字列表,但我担心其中很多都不是素数!)
答案 1 :(得分: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