首先写一个方法判断这个数是否是素数:
判断一个数是否素数(从2开始,只有它自己和1是它的乘法因子)
一般的方法
function isPrime(n) { if(n <=1) {return false} // Math.floor下限 const N = Math.floor(Math.sqrt(n)) let is_prime = true for(let i =2;i<=N;i++) { if(n%i===0) { is_prime = false break } } return is_prime }
然后再求1-10000内的所有素数
let arr = [] for(let i = 0 ; i < 100000; i++) { if(isPrime(i)) { arr.push(i) } }
把所有的素数放在arr中
用迭代器的思想
这种方法的性能会好一点
function* sieve_primes(n) { let numbers = Array.from({length:n-2},(_,i)=>i+2) // 拿到一个2-10000的数组 let p = null while(p=numbers.shift()) { yield p numbers = numbers.filter(t=>t%p !==0) } return numbers } // 那迭代器值的方法 const it = sieve_primes(10000) console.log([...it])