javascript - 是否可以在不使用 for 循环的情况下找到素数?可以仅使用过滤器方法完成吗?
问题描述
在给定的输入 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))
解决方案
@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);```
推荐阅读
- javascript - 一旦 TouchableOpacity 消失,如何让它出现在我的屏幕底部?
- java - 如何修改JITSI Flutter插件并导入修改后的包?
- python - 为什么评估量化模型的指标中有一些 1、0 和一些 NAN?
- firebase - Firebase - Firestore 查询报告
- excel - 通过 vba 绘制图表时遇到问题
- reactjs - 反应路由器与 AWS S3 上具有长查询参数的路由不匹配
- excel - Excel 复选框值属性在极少数情况下无法设置
- python - 如何修复或清理损坏的 JSON 文件
- java - Recyclerview 中的 Exoplayer 带有图像和视频,如 instagram,但仅停止最后一个视频,其他视频在 android 中回压后仍在播放
- firebase - 从 firebase cloud firestore 检索每个产品数据