求质数
什么是质数
1. 什么是质数
数学定义:质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。
2. 质数仅能被1和其本身整除,即2到num-1的数都不能被质数整除
3. 代码实现
// 基本代码实现
function isPrime(num) {
// 小于等于1的自然数不是质数
if ( num <= 1 ) return false
// 2到num-1的数都不能被质数整除
for (let i = 2; i < num; i++) {
if ( num % i === 0 ) {
return false;
}
}
return true
}
console.log(isPrime(2))
第二种实现方式isPrime:
// 一个数的两个因数,左边的因数小于等于这个数的开平方,右边的因数大于等于这个数的开平方
// 比如16 开平方为4,它的因数有1*16、2*8、4*4
// 2是最小的质数
function isPrimePromote(num) {
if ( num <= 1 ) return false
// 取开平方数
let sqrtNum = parseInt(Math.sqrt(num))
for (let i = 2; i <= sqrtNum; i++) {
if (sqrtNum % i === 0) {
return false
}
}
// 是质数会返回true
return true
}
console.log(isPrimePromote(2))
求1000内的质数
// 求1000以内所有的质数
function getPrimes() {
let resArr = []
for (let j = 2; j <= 1000; j++) {
if (isPrime(j)) {
resArr.push(j)
}
}
return resArr
}
getPrimes()
也可以封装称为一个类
class Prime {
constructor(num) {
this.num = num
}
// 判断是否为质数, 此num非构造函数中num
isPrime(num) {
if ( num <= 1 ) return false
let temp = parseInt(Math.sqrt(num))
for (let i = 2; i <= temp; i++) {
if (num % i === 0) {
return false
}
}
return true
}
// 获取质数
getPrimes() {
let result = []
for (let i = 2; i <= this.num; i++) {
if (this.isPrime(i)) {
result.push(i)
}
}
return result
}
}

浙公网安备 33010602011771号