简体   繁体   English

我的素数功能坏了,但我不知道为什么

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

The following is a small function that I made that is supposed to list all of the prime numbers between 1 and 1001. It uses a for loop to get a number, then another for loop to check if it is prime. 以下是我制作的一个小函数,该函数应该列出1到1001之间的所有质数。它使用for循环获取一个数字,然后使用另一个for循环检查它是否为质数。 Once it is done checking (if it is prime), it pushes the number to an array. 一旦完成检查(如果是质数),它将把数字压入数组。 This array should be outputted at the end, but it is not. 此数组应在末尾输出,但不是。 Thanks in advance. 提前致谢。

<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>.

Here is working code: 这是工作代码:

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 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();

You just need to convert your js array to string using toString; 您只需要使用toString将js数组转换为字符串; But your algorythm stil incorrect, u add number to array each time when noomber%i!=0 但是您的算法仍然不正确,当noomber%i!= 0时,您每次都将数字添加到数组中

Here is the right function: 这是正确的功能:

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;

}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM