如何在JavaScript中找到介于1-999之间的所有素数?

时间:2014-10-13 21:49:47

标签: javascript for-loop numbers

这是我到目前为止所做的事情:

window.onload = function() {
    var prime = false;
    for (var counter = 0; counter < 1000; counter++) {
        for (var i = 2; i <= counter; i++){
            if (counter % i == 0 && i != counter){
                prime = true;
            }
        }
            if (prime == false){
            document.write(counter);
        }
    }
};

这根本不能满足我的需要,但我不太清楚我做错了什么。我需要用素数来做一些事情,但现在我的问题是获得素数本身。谢谢。

3 个答案:

答案 0 :(得分:0)

你搞砸了......

  • 如果它是可分的,你说素数是真的,然后你打印出如果素数是假的吗?
  • i不需要升级到counter,它的根就足够了。
  • 您在哪里重置prime变量? (提示,你没有)

答案 1 :(得分:0)

答案 2 :(得分:0)

Answer can be found here。由simple Google search找到。

引用:

  

以下是JavaScript中筛选实现的示例:

function getPrimes(max) {
    var sieve = [], i, j, primes = [];
    for (i = 2; i <= max; ++i) {
        if (!sieve[i]) {
            // i has not been marked -- it is prime
            primes.push(i);
            for (j = i << 1; j <= max; j += i) {
                sieve[j] = true;
            }
        }
    }
    return primes;
}
     

然后getPrimes(100)将返回2和2之间所有素数的数组   100(含)。当然,由于内存限制,您无法使用   这有很大的争论。

     

Java实现看起来非常相似。