我的素数函数坏了,但我没有;我不知道为什么

My prime number function is broken but I don't know why

本文关键字:我不知道 为什么 函数 坏了 我的      更新时间:2024-06-29

下面是我制作的一个小函数,它应该列出1到1001之间的所有素数。它使用for循环来获得一个数字,然后使用另一个for循环来检查它是否为素数。一旦它完成了检查(如果它是素数),它就会将数字推送到一个数组中。这个数组应该在末尾输出,但不是。提前谢谢。

<html>
<body>
<script>
function pNumList(){
    var primeNumbers = [];
    for(var noomber = 2; noomber<=1001; noomber++){
        for(var i = 2; i<noomber; i++){
            if(noomber%i==0){}else{

                primeNumbers.push(noomber);
            }
        }
    }
    pNumbersList.innerHTML = primeNumbers;
}
</script>
<p id="pNumbersList"></p>
<button  onclick="pNumList()" value = "Let's see em">Prime numbers list!</button>
<br>
<p>This might take a sec...</p>
</body>
</html>.

以下是工作代码:

function pNumList(){
    var primeNumbers = [];
    for(var noomber = 2; noomber<=1001; noomber++){
        var prime = true;
        for(var i = 2; i<noomber; i++){
            if(noomber%i==0){
                prime = false;
                break;
            }
        }
        if (prime) {
            primeNumbers.push(noomber);
        }
    }
    pNumbersList.innerHTML = primeNumbers.join(',');
}

JSFIDDLE

 function pNumList(){
var primeNumbers = [];
for(var noomber = 2; noomber<=1001; noomber++){
    for(var i = 2; i<noomber; i++){
        if(noomber%i==0){}else{

            primeNumbers.push(noomber);
        }
    }
}
pNumbersList.innerHTML = primeNumbers.toString();

您只需要使用toString将js数组转换为字符串;但你的算法仍然不正确,你每次在编号为%i的时候都会向数组中添加数字=0

下面是正确的函数:

function pNumList(){
var primeNumbers = [];
for(var noomber = 2; noomber<=1001; noomber++){
    for(var i = 2; i<noomber; i++){
        if(noomber%i==0){
        break;
        }else{

            primeNumbers.push(noomber);
break;
        }
    }
}
pNumbersList.innerHTML = primeNumbers;
}