要想判断质数,首先我们弄明白什么是质数。
质数(Prime number),又称素数,指在大于1的自然数中,除了1和该数自身外,无法被其他自然数整除的数(也可定义为只有1与该数本身两个正因数的数)。解释来自维基百科。
弄清楚定以后,我们可以开始判断啦,来个函数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;
}
现在我们来运用这个函数,比如我们想判断379是不是质数:
console.log(isPrimeNum(379)) //结果是true
另外,我们想知道一个范围内有哪些质数怎么办,再来个函数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 -