如果找到素数时有条件 - 总是返回false

时间:2018-03-04 15:43:36

标签: javascript

var enteredValue = prompt("enter a number");
enteredValue = enteredValue + 0;
console.log(isPrime(enteredValue));

function isPrime(num) {
  for (var i = 2; i < num; i++) {
    if (num % i === 0) {
      return false;
    } else {
      return true;
    }
  }
}

谁能告诉我自己做错了什么?代码总是返回false。

2 个答案:

答案 0 :(得分:2)

您需要将true的返回移出循环,因为您需要在返回true之前检查所有因素。

&#13;
&#13;
var enteredValue = +prompt("enter a number");
console.log(isPrime(enteredValue));

function isPrime(num) {
    for (var i = 2; i < num; i++) {
        if (num % i === 0) {
            return false;
        }
    }
    return true;
}
&#13;
&#13;
&#13;

答案 1 :(得分:0)

您的方法应该在for循环之外返回true。在您的示例中,您将通过输入else块来重新调整第一个iteratin。

这将有效:

function isPrime(num) {
   for (var i = 2; i < num; i++) {
     if (num % i === 0) {
       return false; // return if  it's not a prime
     }
   }
   return true; // return only if it's a prime number
}

您还可以在this post中查看其他主要解决方案。