我真的很想知道为什么这段代码不起作用。有人能告诉我为什么 {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 .还有其他方法,但它们的复杂性要差得多。
Eratosthenes 筛法的一种变体称为欧拉筛法(或欧拉筛法)。走几条捷径,减少计算量,效率稍高。
关于javascript - 使用javascript测试素数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50836884/