当前位置: 博客 /  JavaScript  / JavaScript判断质数

1. 质数

要想判断质数,首先我们弄明白什么是质数。

质数(Prime number),又称素数,指在大于1的自然数中,除了1和该数自身外,无法被其他自然数整除的数(也可定义为只有1与该数本身两个正因数的数)。解释来自维基百科。

2. 判断函数

弄清楚定以后,我们可以开始判断啦,来个函数isPrimeNum,传入一个参数,判断传入的参数是否为质数,返回结果为boolean类型。

function isPrimeNum(num){
  //不是数字或不是整数或小于2的不是
  if(typeof num !== "number" || !Number.isInteger(num) || num < 2){
    return false;
  }
  //2是,偶数不是
  if(num == 2){
     return true;
  }else if(num % 2 == 0){  
     return false;
  }
  //5是,其他能被5整除的不是
  if(num == 5){
     return true;
   }else if(num % 5 == 0){  
     return false;
  }
  //如果不是以上情况再做判断如下:
  //定义一个变量等于num的平方根
  var squareRoot = Math.sqrt(num);
  //定义一个变量i,从3开始间隔2递增直到num的平方根
  for(var i = 3; i <= squareRoot; i += 2) {
  //用num对i取模,余数为0能整数则不是质数
     if (num % i === 0) {
       return false;
      }
  }
  //不符合上述return false的情况则返回true
  return true;
 }

3. 判断某个数是不是质数

现在我们来运用这个函数,比如我们想判断379是不是质数:

console.log(isPrimeNum(379)) //结果是true

4. 找出某个范围内的所有质数

另外,我们想知道一个范围内有哪些质数怎么办,再来个函数primeNumInRange,传入一个参数做为你想知道的范围,返回的结果是数组

function primeNumInRange(range){
  var primeArr = [];
  for(var i = 0; i <= range; i++){
    if(isPrimeNum(i)){
        primeArr.push(i)
    }
  }
  return primeArr;
}

现在我们来运用,打印1000以内的质数:

console.log(primeNumInRange(1000))   //结果是数组Array,长度为168,此处不列出

- END -