javascript - 使用javascript测试素数

标签 javascript discrete-mathematics

我真的很想知道为什么这段代码不起作用。有人能告诉我为什么 {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/

相关文章:

algorithm - 在工作中实现利润最大化

python - 离散凸包

c++ - 二阶线性递推方程的矩阵表示

algorithm - 寻找 Big-O、Omega 和 theta

javascript - 范围在angularjs中的ng-repeat之外不起作用

javascript - Html 链接在某些点击时未注册

php - 使用 php、ajax 和 mysql 的随机报价生成器

javascript - 在javascript中创建函数以根据选择启用/禁用输入

寻找最小组件集合的算法

javascript - Firebase 中的多个管理员 - 这可能吗?