使用 javascript 测试质数

Test for prime number with javascript

我真的很想知道为什么这段代码不起作用。有人能告诉我为什么 {2,3,5,7} 不能用作测试素数的基础的原因吗?下面的代码试图对 200 万以下的所有素数求和

var x = 2 + 3 + 5 + 7;
for(i = 2; i<2000000; i++){
    if(Number.isInteger(i/2) || Number.isInteger(i/3) || Number.isInteger(i/5) || Number.isInteger(i/7)){

    }else{

        x = x + (i);
    }
}
 console.log(x);

如T.J.Crowder所述,i未声明;但是,我认为这不是您唯一的问题。您正在使用一小部分素数作为查找所有素数的基础。这行不通。一些不能被 {2, 3, 5, 7} 整除但仍不是质数的数字示例包括:

121 = 11 * 11
169 = 13 * 13
...

更准确的方法是使用所谓的 Sieve of Eratosthenes。还有其他方法,但它们的复杂性要差得多。

埃拉托色尼筛法的一种变体称为欧拉筛法(或欧拉筛法)。走几条捷径,减少计算量,效率稍微高一点。