📜  如何在javascript中获取素数(1)

📅  最后修改于: 2023-12-03 14:52:44.601000             🧑  作者: Mango

如何在 JavaScript 中获取素数

素数是指只能被 1 和本身整除的自然数,也是算法题中一个常见的话题。本文将介绍如何在 JavaScript 中获取素数,主要包括以下几个部分:

  1. 判断素数的算法
  2. 获取素数的函数
  3. 使用示例
判断素数的算法

判断素数最简单的方法是试除法,即对于每个数 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,否则返回 falsegetPrimes 函数接受一个正整数参数 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 中获取素数,主要包括判断素数的算法和获取素数的函数两部分,并且给出了使用示例。实际应用中,如果需要获取多次素数,可以使用筛法等更高效的算法。