我在这做错了什么? Prime用Javascript

时间:2015-08-19 20:07:22

标签: javascript

更新此内容!我一直试图用javascript警告所有素数高达100。这是我到目前为止(我的计算机不允许我复制和粘贴由于某种原因所以我必须screencap发布) 如果你可以引导我朝着正确的方向前进,或者让我知道我失踪了什么,那将是惊人的。谢谢! enter image description here

2 个答案:

答案 0 :(得分:0)

一个不错的典型实现,当然不是最有效的实现:

function primenum(num){
    if(num < 2 ) return false // 0 and 1 are not primes

    for(var i=2;i*i<=num;i++){ 

        if( num % i == 0){
            return false; // if we find a divisor up to the square of the number, then its not prime and we stop checking
        }

    }
    return true; // if we couldn´t find a divisor, then it means its a prime number
}

for(var i=0;i<100;i++){
    if(primenum(i) == true) console.log(i) // if its prime, display on console
}

编辑:如果要提醒1到100之间的所有素数,我们可以将它们存储在数组中并稍后显示:

primes = [];
for(var i=0;i<100;i++){
    if(primenum(i) == true){
        primes.push(i);
    }
}
alert(primes)

至于为什么我们检查数字的平方:Why do we check up to sqrt

答案 1 :(得分:0)

我已经包含了Javascript来从用户那里获取输入并在所选范围之间找到素数。

  function primeNumbers(){
      var min=document.getElementById("minNumber").value;
      var max=document.getElementById("maxNumber").value;
      var Nprime=new Array();
      for(var i=min,k=0;i<=max;i++){
       if(prime(i)){
           Nprime[k]=i;
           k++;
       }   
    }
    document.write("Prime numbers are: "+Nprime);

}

   function prime(num){  
        if(num < 2 ) 
            return false; // 0 and 1 are not primes
        for(var j=2;j<=num/2;j++){ 
            if( num % j === 0){
                return false; //If we find a divisor, then return false
                }
        }
    return true; // prime number found
    }


<body>
<p> Finding prime numbers between </p> <input type="number" id="minNumber"> and <input type="number" id="maxNumber">.
<p><input type="button" value="Show now" onclick="primeNumbers()">
</body>