我正在尝试显示最多10个所有素数但它无效。你能看出我做错了吗?
function findPrimeNumbers() {
var count = 10,
primes = [];
for (var i = 0; i <= count; i++) {
if (count / i === 1 || count) primes.push(i);
else continue;
count -= 1;
}
for (var i = 0, len = primes.length; i < len; i++) return primes[i];
}
console.log(findPrimeNumbers());
它只在控制台中返回0。
答案 0 :(得分:2)
这是关于生成素数的最简单方法。请注意,有更有效的方法,但它们更难理解。
function findPrimeNumbers (count) {
var primes = [];
for (var J = 2; J <= count; J++) {
var possPrime = true;
for (var K = 2, factorLim = Math.sqrt (J); K <= factorLim; K++) {
if (J % K == 0) {
possPrime = false;
break;
}
}
if (possPrime)
primes.push (J);
}
return primes;
}
console.log (findPrimeNumbers (10) );
这产生了所有素数&lt; = 10:
[2, 3, 5, 7]
答案 1 :(得分:0)
if (count / i === 1 || count / i === count)
答案 2 :(得分:0)
你没有说 它是如何工作的,但我注意到的第一件事就是你在增加 i ,同时减少数,所以我永远不会一直到10。
此外, count / i 会在第一次迭代时导致零除错误(除非Javascript以某种方式神奇地处理这种情况我不熟悉)。 / p>
然后你“循环”你的返回值 - 但你只能从函数返回一次,所以当然你只会返回第一个值。
答案 3 :(得分:0)
你从最后一个for循环中的函数返回。删除for循环,只需返回数组。
答案 4 :(得分:0)
for (var i = 0, len = primes.length; i < len; i++) return primes[i];
这里只返回数组的第一个元素。我认为你的意思是这样的
var retstr = "";
for (var i = 0, len = primes.length; i < len; i++)
{
//To improve str format
if(i == len-1)
retstr += primes[i];
else
retstr += primes[i] + ", ";
}
return retstr;
希望这有帮助。
答案 5 :(得分:0)
function PrimeCheck(n){ //function to check prime number
for(i=2;i<n;i++){
if(n%i==0){
return false
}
}
return true;
}
function print(x){ //function to print prime numbers
var primeArray=[];
for(j=2;j<x;j++){
if(PrimeCheck(j)==true){
primeArray.push(j);
}
}
console.log(primeArray);
}
print(10); //[2,3,5,7]