javascript - 获取前 N 个素数的总和 javascript
问题描述
我试图找到前 N 个素数的总和,下面我附上了我的代码。我在最后一部分苦苦挣扎(得到总和)。到目前为止,我已经定义了什么是质数并得到了前 N 个质数
function isPrime(number) {
if (number <= 1) return false;
if (number === 2) return true;
else {
for (let i = 2; i < number; i++) {
if (number % i === 0) return false;
}
return true;
}
}
console.log(isPrime(6)); //false
function getNprimes(n) {
const arr = [];
let i = 2
while (arr.length < n) {
if (isPrime(i)) {
arr.push(i)
}
i++
}
return arr;
}
console.log(getNprimes(5)); //[2, 3, 5, 7, 11]
const sumOfNPrimes = (num) => {
let sum = getNprimes(num);
if (sum === 0) {
sum = getNprimes(num + 1)
return sum;
}
}
console.log(sumOfNPrimes(4));
解决方案
检查sum === 0
将始终返回false
,因为sum
它是一个数组,并且您正在使用严格相等来检查类型。您应该length
改为检查属性,并使用!=
运算符(例如,仅当数组的长度不是时才执行代码0
)。
要计算结果数组的总和,您可以使用Array#reduce
:
function isPrime(number) {
if (number <= 1) return false;
if (number === 2) return true;
else {
for (let i = 2; i < number; i++) {
if (number % i === 0) return false;
}
return true;
}
}
console.log(isPrime(6)); //false
function getNprimes(n) {
const arr = [];
let i = 2
while (arr.length < n) {
if (isPrime(i)) {
arr.push(i)
}
i++
}
return arr;
}
console.log(getNprimes(5)); //[2, 3, 5, 7, 11]
const sumOfNPrimes = (num) => {
let sum = getNprimes(num).reduce((a, b) => a + b);
return sum
}
console.log(sumOfNPrimes(4));
推荐阅读
- python - Tensorflow metal 插件已经注册错误
- python - 根据各种条件提取数据
- google-bigquery - 为什么我的谷歌云功能需要超过 9 分钟才能执行,而我本地机器上的相同功能需要 < 2 分钟
- amazon-web-services - 来自未加密 SNS 主题的消息未到达加密 SQS 队列
- git - 本地 .git 文件夹的大小 VS 克隆后
- python - 我正在尝试根据 Python 中每个列表的权重对一些列表进行批处理
- python - “ModuleNotFoundError:没有名为‘igdb.wrapper’的模块;‘igdb’不是包”igdb-api-v4
- javascript - 无法使用 js 隐藏 div,但我可以使用 js 显示 div。似乎“否则,如果”不起作用。有人可以看看这个吗?
- python - 在 Python 中使用递归时的 WHILE 与 IF
- azure-data-factory-2 - Azure 数据工厂存储事件触发器 - 访问 blob 的完整 URL