确定素数

时间:2016-06-24 02:51:08

标签: javascript

我试图编写一个函数来确定某个值是否为素数,然后显示一条消息以提供结果。不幸的是,它不起作用 - 没有显示错误信息,我也看不出合乎逻辑的原因。 (对于info,它调用了一个函数number(),我已经独立测试了它并且它可以工作 - 它提供了一个正整数)。我在javascript方面不是很有经验,但是从在线学习开发了以下内容。任何指向正确方向的人都会非常感激。

function validate() {
var message = "This number is ";
var number;
var value = numbers();
var indicator = true;

for (int i=2; i <= value/2; i++) {
   number = value % i;
   if (number==0)  {
      indicator = false;
      //or indicator = number % 2 != 0;
    break;
   }
 }

 if (indicator) {
 message += "a prime number.";
 }
 else {
 message += "not a prime number.";
}

document.getElementById('text').innerHTML = message;  
}

2 个答案:

答案 0 :(得分:0)

  1. 只有素数的偶数是2,所以丢弃所有可以被2整除的其他数字
  2. 仅考虑赔率
  3. ,最大限度地减少迭代次数
  4. 通过迭代到给定数字的根
  5. 来最小化一点

    所以你能做的就是编写如下方法:

    function isPrime(number) {
        if (number === 2) return true;
        if (number % 2 === 0) return false;
        var flag = true;
        var i, length = Math.ceil(Math.sqrt(number));
    
        for (i = 3; i <= length; i += 2) {
            if (number % i === 0) {
                flag = false;
                break;
            }
        }
        return flag;
    }
    

答案 1 :(得分:0)

int循环

中将var替换为for

for (var i=2; i <= value/2; i++) {