为了账号安全,请及时绑定邮箱和手机立即绑定

我没有在素数函数中得到平方循环索引

我没有在素数函数中得到平方循环索引

千巷猫影 2023-04-27 14:58:36
下面是我的函数,总结了低于给定的所有素数maxNum。我不明白为什么函数中的 for 循环在使用instead ofisPrime时不起作用。j <= numj ** 2 <= numfunction sumPrimes(maxNum) {    let sum = 0;    for (let i = 2; i <= maxNum; i++) {        if (isPrime(i)) {            sum += i        }    }    return sum}function isPrime(num) {    for (let j = 2; j <= num; j++) { // when I use j ** 2 <= num it works        if (num % j === 0) {            return false        }    }    return true}console.log(sumPrimes(20))
查看完整描述

1 回答

?
鸿蒙传说

TA贡献1865条经验 获得超7个赞

如果您使用j <= num,循环将计数j到数字本身,然后匹配num % j === 0并返回 false。

所以如果num是 17,循环将执行17 <= 17which passes 并且循环体执行17 % 17 === 0,所以它总是返回 false,无论你传入什么数字。

您可以在循环头中使用j < numinstead of j <= num,这也应该有效,因为使用小于号时永远不会达到数字本身。


查看完整回答
反对 回复 2023-04-27
  • 1 回答
  • 0 关注
  • 88 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信