显示所有不在JavaScript中使用的素数的代码?

时间:2011-07-08 10:48:34

标签: javascript primes

我正在尝试显示最多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。

6 个答案:

答案 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]


See Wikipedia for an explanation

答案 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]