js实现素数
判断一个数是否为素数
素数是指大于1的自然数,除了1和它本身外,不能被其他自然数整除。以下是一个简单的JavaScript函数来判断一个数是否为素数:

function isPrime(num) {
if (num <= 1) return false;
if (num === 2) return true;
if (num % 2 === 0) return false;
for (let i = 3; i <= Math.sqrt(num); i += 2) {
if (num % i === 0) return false;
}
return true;
}
生成指定范围内的素数
如果需要生成某个范围内的所有素数,可以使用以下函数:

function generatePrimesInRange(start, end) {
const primes = [];
for (let i = start; i <= end; i++) {
if (isPrime(i)) {
primes.push(i);
}
}
return primes;
}
优化素数生成算法
对于较大的范围,可以使用埃拉托斯特尼筛法(Sieve of Eratosthenes)来高效生成素数:
function sieveOfEratosthenes(max) {
const sieve = new Array(max + 1).fill(true);
sieve[0] = sieve[1] = false;
for (let i = 2; i <= Math.sqrt(max); i++) {
if (sieve[i]) {
for (let j = i * i; j <= max; j += i) {
sieve[j] = false;
}
}
}
const primes = [];
for (let i = 2; i <= max; i++) {
if (sieve[i]) primes.push(i);
}
return primes;
}
使用示例
console.log(isPrime(17)); // 输出: true
console.log(generatePrimesInRange(10, 30)); // 输出: [11, 13, 17, 19, 23, 29]
console.log(sieveOfEratosthenes(50)); // 输出: [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47]






