求解从1到n的素数(质数)集合
/**
* 获取n以内的所有素数
* @param n:
*/
let getPrimeNumbers = function (n){
if(n<1){
return []
}
let primes=[]
for(let i=3;i<=n;i++){
if(isPrimeNumber(i)){
primes.push(i)
}
}
return primes
}
/**
* 判断一个数是否为素数
* @param n 数据
*/
let isPrimeNumber = function (num){
// 首先素数必然是奇数
if(num <= 2 || num % 2 == 0){
return false
}
let isPrime = true
// 1.先通过Math.sqrt求解该数的开平方根
// 2.再通过Math.floor对开平方根的向下求整(例如3*3=9,4*4=16,那么10到15之内只需要证明不能被3及以内整除则说明是素数)
let max=Math.floor(Math.sqrt(num))
for(let j= 2;j <= max;j++){
if(num % j == 0){
isPrime = false
continue
}
}
return isPrime
}