什么是质数?
指在大于1的自然数中,除了1和该数自身外,无法被其他自然数整除的数称为质数
如何判断?
一个最简单且暴力的判断方法就是遍历2到该数之间的所有自然数,如果不存在可以被整除的数,那么该数就是质数
优化一下?
其实并不需要遍历到该数,我们都知道最小的质数是2,那么一个自然数N最大的因数也就是N/2,所以我们只需要遍历到N/2即可,因为我们是要找可以被它整除的数,如果都不是它的因数,那肯定不会被它整除了
再优化一下?
一个数N可以分解为两个因数,最极端的情况就是两个因数相等即(后文称之为“中间值”),其他情况就是两个因数分布在“中间值”两边,如果我们判断在2到“中间值”之间都没有存在一个N的因数,那么“中间值”到N之间就更不可能存在另一个因数了
所以我们只需要遍历2到“中间值(包含)”即可
代码实现
function isPrime(N) {
for (let i = 2; i <= Math.sqrt(N); i++) {
if (N % i == 0) return false
}
return true
}