判断数字是否素数
概念:约数只有1和本身的大于1的数字称为质数,也称为素数
文章链接
/**
* 常规循环判断
*/
function isPrime(num) {
if (num == 2 || num === 3) {
return true
}
let i = 2
while (i < num - 1) {
if (num % i === 0) {
return false
}
i++
}
return true
}
/**
* 快速判断
* 理论快
* 实际好像差不多
*/
function isPrimeQuit(num) {
if (num == 2 || num === 3) {
return true
}
// 规律:大于等于5的质数一定和6的倍数相邻 5 7 11 13 17 19
// 不在6的倍数两侧的 一定不是质数
if (num % 6 !== 1 && num % 6 !== 5) {
return false
}
// 在6的倍数两侧的 也可能不是质数
for (let i = 5; i <= Math.sqrt(num); i += 6) {
if (num % i === 0 || num % (i + 2) === 0) {
return false
}
}
return true
}