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

下面是我的函数,总结了低于给定的所有素数maxNum。


我不明白为什么函数中的 for 循环在使用instead ofisPrime时不起作用。j <= numj ** 2 <= num


function 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))


千巷猫影
浏览 89回答 1
1回答

鸿蒙传说

如果您使用j <= num,循环将计数j到数字本身,然后匹配num % j === 0并返回 false。所以如果num是 17,循环将执行17 <= 17which passes 并且循环体执行17 % 17 === 0,所以它总是返回 false,无论你传入什么数字。您可以在循环头中使用j < numinstead of&nbsp;j <= num,这也应该有效,因为使用小于号时永远不会达到数字本身。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript