质数 JavaScript

2023-12-29

有人可以指导我在这里获取素数吗?这是家庭作业,所以我不想要答案,但如果有一些指示,我将不胜感激。这真的让我很烦:(

我想我已经很接近了。但我遇到的问题是 25 和 35。这些不是素数,但这个函数正在返回它们

var getPrimeNumber = function(n) {
    if(n === 1) return "";
    else if(n == 2) return 2;
    else if(n == 3) return 3;
    else { 
        for(i=Math.floor(Math.sqrt(n)); i>=2; i--){
            //console.log(i);//maybe another var in here? 
            if(n%i !==0 && n%2 !==0 && n%3 !== 0)
                return n; // 25/Math.sqrt(25) will be equal to zero this is what gives me 25 !!!   
        } 
    }
};

基于这一页 https://en.wikipedia.org/wiki/Prime_number#Trial_division,这将是一种确定数字是否为素数的方法:

function isPrime(number) {
    let start = 2;
    const limit = Math.sqrt(number);
    while (start <= limit) {
        if (number % start++ < 1) return false;
    }
    return number > 1;
}

In node.js确定 2 到 100.000 之间的素数大约需要 250Ms。

也可以看看 ... http://jsfiddle.net/KooiInc/gg1kwnfz/embedded/result,js,html,css/

[八月编辑2021年] 一个更高效的函数。看这个 Stackblitz 项目 https://stackblitz.com/edit/js-fkqg5c?file=index.js

document.querySelector(`pre`).textContent = `Prime numbers < 100\n` +
  [...Array(100)]
  .map((v, i) => isPrime(i) ? i : 0)
  .filter(v => v > 0)
  .join(`\n`);

function isPrime(number) {
  const checkPrime = (nr, limit) => {
    for (let start = 3; start <= limit; start += 2) {
      if (0 === nr % start) {
        return false;
      }
    }

    return nr > 1;
  };

  return number === 2 || number % 2 !== 0 && checkPrime(number, Math.sqrt(number));
}
<pre></pre>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

质数 JavaScript 的相关文章

随机推荐