Javascript查找素数

时间:2012-11-30 07:01:21

标签: javascript

我正在编写一个小脚本来查找并打印出来自X到Y的所有素数。这是我写的:

var numX = prompt('Enter a number greater than 0:','');
var numY = prompt('Enter a number greater than ' + numX + ':','');

while (numX <= numY) {
    if (numX == 1 || numX == 2 || numX == 3) {
    document.write(numX + '</br>');
    } else if (numX % 2 === 0 || numX % 3 === 0 || numX % 5 === 0 || numX % 7 === 0){
    document.write();
    } else {
    document.write(numX + '</br>');
    }
    numX++;
};

现在,只要第一个数字为1,这就可以正常工作。但是,如果第一个数字大于1,则不会打印任何内容。我不确定这是否是这个问题的正确论坛(也许是数学论坛?),但我想我会在这里问一下有人可以帮助我的机会。我也知道筛子是更好的方法,但我想先尝试将其作为一个while循环。任何和所有的帮助表示赞赏!

4 个答案:

答案 0 :(得分:3)

虽然我了解您要做的事情,但我强烈建议您查看Sieve of Eratosthenes。你真的想知道不同的算法来计算这些东西,以防你决定处理非常大的数字。虽然你现在的方式可能会在较小的范围内工作,但更大的范围会变得疯狂。

另外我相信这个Stackoverflow问题与这个问题非常相似,并且答案非常好:

finding sum of prime numbers under 250

答案 1 :(得分:0)

您可以尝试以下任何选项:http://www.javascripter.net/faq/numberisprime.htm

答案 2 :(得分:0)

您好我已经为您的代码添加了位更改(添加了5和7个素数的条件)及其工作...

var numX = prompt('Enter a number greater than 0:','');
var numY = prompt('Enter a number greater than ' + numX + ':','');

while (numX <= numY) {
    if (numX == 1 || numX == 2 || numX == 3 || numX == 5 || numX == 7) {
    document.write(numX + '</br>');
    } else if (numX % 2 === 0 || numX % 3 === 0 || numX % 5 === 0 || numX % 7 === 0){
    document.write();
    } else {
    document.write(numX + '</br>');
    }
    numX++;
};

查看演示here

答案 3 :(得分:0)

好的,事实证明我在问这个问题时跳了起来。我更关心的是,如果声明正在工作,我甚至没有注意到我的公式存在严重缺陷!

问题可能出在第二个变量上。如果第一个变量是1,那么第二个变量可以是任何数字。但是,如果第一个变量大于1,那么第二个变量必须小于100,否则它将不起作用。