首页 > 解决方案 > (Javascript)给定间隔中的素数:for循环不迭代

问题描述

在下面的代码中是一个素数测试函数(如果素数则返回真,否则返回假)。我用它来打印 5 到 20 之间的素数。

预期输出明显是5,7,11,13,17,19

for 循环似乎没有迭代,只是停留在 5。输出就好像脚本卡在无限 while 循环中一样。

我不知道我做错了什么,也许 if 语句没有正确编写?对 javascript 还是有点陌生​​。

function is_prime(number){

    if (number==2 || number==3){
        return true;
    }
    
    if (number==0 || number==1 || number%2==0){
        return false;
    }

    if ((number+1)%6!=0 && (number-1)%6!=0){
        return false;
    }
    
    for(i=3; i-1<=parseInt(number)**.5; i+=2){

        if (number%i==0){
            return false;
        }
    }
    
    return true;
}


for(i=5;i<=20;i++){

    if(is_prime(i)){

        console.log(i)
    }
}

标签: javascriptfor-loopif-statementprimes

解决方案


您已经ifor()循环中创建了一个名为的全局变量 - 然后您在函数中更改了相同的变量。

let i这两种情况下使用。


推荐阅读