📅  最后修改于: 2023-12-03 14:52:44.601000             🧑  作者: Mango
素数是指只能被 1 和本身整除的自然数,也是算法题中一个常见的话题。本文将介绍如何在 JavaScript 中获取素数,主要包括以下几个部分:
判断素数最简单的方法是试除法,即对于每个数 n,在 2 到 $sqrt(n)$ 之间枚举数 i,判断是否存在 i 能够被 n 整除。如果存在,则 n 不是素数;否则,n 是素数。这个算法的时间复杂度为 $O(n^{\frac{1}{2}})$。
还有一种更高效的算法是筛法,例如 Eratosthenes 筛法和 Euler 筛法。这些算法的时间复杂度为 $O(n\log\log n)$ 左右,但需要用到数组或集合等额外的数据结构存储信息。
这里为了简单起见,我们选择最基本的试除法来实现获取素数的函数。
我们可以使用以下代码来实现获取素数的函数。
function isPrime(num) {
if (num < 2) {
return false;
}
for (let i = 2; i <= Math.sqrt(num); i++) {
if (num % i === 0) {
return false;
}
}
return true;
}
function getPrimes(num) {
const primes = [];
for (let i = 2; i <= num; i++) {
if (isPrime(i)) {
primes.push(i);
}
}
return primes;
}
isPrime
函数用于判断一个数是否为素数,如果是素数,则返回 true
,否则返回 false
。getPrimes
函数接受一个正整数参数 num
,返回所有小于等于 num
的素数。
使用上述代码获取小于等于 100 的素数的示例如下:
const primes = getPrimes(100);
console.log(primes); // [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]
本文介绍了如何在 JavaScript 中获取素数,主要包括判断素数的算法和获取素数的函数两部分,并且给出了使用示例。实际应用中,如果需要获取多次素数,可以使用筛法等更高效的算法。