在给定的输入x数组中,您可以找到所有小于x的质数吗?这可以通过for循环完成,我在下面提供了代码。但是,我真的很想知道是否可以在没有for循环的情况下完成此操作。是否正在考虑使用过滤器方法的可能方法?
我的for循环代码
function findThePrimes(num) {
let nonPrimes = [], i, j, primes = [];
for (i = 2; i <= num; ++i) {
if (!nonPrimes [i]) {
primes.push(i);
for (j = i << 1; j <= num; j += i) {
nonPrimes[j] = true;
}
}
}
return primes;
}
console.log(findThePrimes(100))
正在寻找与下面的代码类似的东西
function findThePrimes(num) {
numArr = Array.from({length: num}, (v, k) => k+1)
const primeNum = []
const takeOutPrimes = numArr.filter(num => ...not sure what to do next that will push prime numbers into the primeNum array)
}
console.log(findThePrimes(ANY_NUMBER))
答案 0 :(得分:0)
@TylerRoper给了我一个接近的代码链接,但是唯一缺少的是素数数组中的2。所以我设置了一个条件允许2。
这可以更清洁吗??
const isPrime = n => Array(Math.ceil(Math.sqrt(n)+1)).fill().map((e,i)=>i).slice(2).every(m => n%m);
const primeArr = Array(n).fill().map((e,i)=>i+1).slice(1).filter(isPrime)
if (n >= 2) {
primeArr.unshift(2)
}
return primeArr
}
console.log(findPrime(1000).length);```