javascript - JavaScript 中的素数

标签 javascript primes

我用 JavaScript 编写了代码来查找素数。

我创建了一个数组 (var arr) 并将第一个素数放入其中。

我想检查数组中存储的最后一个素数的 i 值(而不是所有数字以加快运行速度。)

检查我的代码并请更正我的语法。

var arr = [2];
document.getElementById("demo").innerHTML = arr;

function myFunction() {

for (i = 3; i <= 10; i++) {
    if (i % 2 !==0) {
        for (j = 0; j <= arr.length - 1; j++){
            if (i % arr[j] !== 0) {
                arr.push(i);
            }
        }
        document.getElementById("demo").innerHTML = arr;    
    }
}

最佳答案

OP 建议的算法可能有问题,即使它适用于 2 到 10 的有限数字范围,在纠正后会产生 2,3,5,7 的预期结果代码。不幸的是,如果数字范围扩大,那么 非质数可能会悄悄出现,如下所示:

var arr = [2];

function myFunction() {

    for (i = 3; i <= 30; i++) {
        if (i % 2 !==0 && i % Math.sqrt(i) !==0) {
            for (j = 0; j <= arr.length - 1; j++){
                if (i % arr[j] !== 0) {
                    arr.push(i);
                }
                break;
            }
        }
    }
    document.getElementById("demo").innerHTML = arr;
}  
myFunction();
<div id="demo"></div>

下面的代码可能效率较低,但好处是无论数字范围有多大,它都可以工作。该解决方案源自 here 借用和修改的代码和 here .

var arr = [2];

function isPrime( n ) {

    
   // eliminate non-integers 
   if (  n != Math.round(n)  ) {
      return false;
   }
   
   // assume n is prime and test if true
   for(var i=2, max=Math.sqrt(n); i <= max; i++) {
       if ( n % i === 0 ) {
           return false;
       }
    }
    return n > 1;
}

function myFunction() {

    for (i = 3; i <= 30; i++) {
      if ( isPrime(i) ) {
          arr.push(i); 
      }// end-if
    }// end-for
    document.getElementById("demo").innerHTML = arr;
}

myFunction();
<div id="demo"></div>

请注意,数组最初以素数 2 开始,当代码遇到指定范围内的素数时,它们将被添加到数组中。顺便说一句,您需要一个 id 为“demo”的 HTML DIV 标记才能正常工作。并且,您只需在循环完成处理后将数组分配给 div 元素的innerHTML 属性一次。最后,您需要调用 myFunction()。

有趣的相关讨论here .

关于javascript - JavaScript 中的素数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46535186/

相关文章:

C#寻找第N个素数

javascript - 如果不在浏览器 View 中,则停止播放视频但不重新启动

javascript - 如何在没有 jQuery 的情况下使用 JavaScript 遍历每个带有类名的选中复选框

java - 如何将一组复选框值从一个 JSP 页面传递到另一个页面

python - 一个列表(可能)可以被另一个整除吗?

仅使用奇数除数计算素数速度较慢

algorithm - 确定有序素数对 (p, q) 的数量,使得 N = p^2+q^3 使得从 0 到 9 的每个数字都恰好出现一次

javascript - 使用javascript清除固定 header

javascript - 如何将 .csv 文件从 Google 文档导入到 javascript 中

c# - 检查数字是否为质数