JavaScript:判断是否为质数的两种方法

122 阅读1分钟

一、遍历大法

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

    return true
}

console.log(isPrime(11)); // true,i=2~10

二、更高效的质数判断

  • 对于每个数n ,其实并不需要从2判断到n-1
  • 一个数若可以进行因数分解,那么分解时得到的两个数-定是一个小于等于sqrt(n),-个大于等于sqrt(n).
  • 比如1 6可以被分别.那么是28, 2小于sqrt(16),也就是4, 8大于4.而44都是等于sqrt(n)
  • 所以其实我们遍历到等于sqrt(n)即可
function isPrime(num) {
  for (let i=2; i<=parseInt(Math.sqrt(num)); i++){
    if (num % i === 0) {
      return false
    }

    console.log(i)
  }

  return true
}

console.log(isPrime(11)); // true, i=2、3