当前位置:首页 > JavaScript

js实现质数

2026-02-01 11:14:13JavaScript

判断一个数是否为质数

质数是指大于1的自然数,除了1和它本身外,没有其他正因数。以下是用JavaScript实现判断质数的方法:

function isPrime(num) {
  if (num <= 1) return false;
  if (num <= 3) return true;

  if (num % 2 === 0 || num % 3 === 0) return false;

  for (let i = 5; i * i <= num; i += 6) {
    if (num % i === 0 || num % (i + 2) === 0) return false;
  }

  return true;
}

生成指定范围内的质数列表

以下函数可以生成从2到指定上限之间的所有质数:

function generatePrimesUpTo(max) {
  const primes = [];
  for (let i = 2; i <= max; i++) {
    if (isPrime(i)) {
      primes.push(i);
    }
  }
  return primes;
}

埃拉托斯特尼筛法(高效算法)

对于较大的数字范围,可以使用更高效的筛法:

function sieveOfEratosthenes(max) {
  const sieve = new Array(max + 1).fill(true);
  sieve[0] = sieve[1] = false;

  for (let i = 2; i * i <= max; i++) {
    if (sieve[i]) {
      for (let j = i * i; j <= max; j += i) {
        sieve[j] = false;
      }
    }
  }

  return sieve.reduce((primes, isPrime, index) => {
    if (isPrime) primes.push(index);
    return primes;
  }, []);
}

获取第n个质数

如果需要获取第n个质数,可以使用以下方法:

function getNthPrime(n) {
  if (n < 1) return null;

  let count = 0;
  let candidate = 2;

  while (count < n) {
    if (isPrime(candidate)) {
      count++;
      if (count === n) return candidate;
    }
    candidate++;
  }

  return null;
}

性能优化提示

对于非常大的数字,可以考虑以下优化:

js实现质数

  • 预计算并缓存已知质数
  • 使用概率性测试算法(如Miller-Rabin测试)处理极大数字
  • 避免不必要的计算,如偶数可以直接排除(除了2)

这些方法可以根据具体需求组合使用,例如先用简单方法处理小数字,对大数字使用更复杂的算法。

标签: 质数js
分享给朋友:

相关文章

js实现换肤

js实现换肤

使用CSS变量实现换肤 通过CSS变量可以轻松实现主题切换功能。CSS变量在根元素中定义,通过JavaScript动态修改这些变量值。 :root { --primary-color: #349…

js实现抽奖

js实现抽奖

实现抽奖功能的基本思路 抽奖功能的核心是随机选择奖项并展示结果。可以通过数组存储奖项,利用随机数生成索引,最后通过动画增强用户体验。 准备奖项数据 定义一个数组存储奖项信息,每个奖项可以包含名称、图…

js实现二叉树

js实现二叉树

二叉树的基本概念 二叉树是一种树形数据结构,每个节点最多有两个子节点,分别称为左子节点和右子节点。二叉树的常见操作包括插入、删除、遍历等。 二叉树的节点定义 在JavaScript中,二叉树的节点可…

js手势实现

js手势实现

手势识别实现方法 在JavaScript中实现手势识别通常涉及监听触摸事件(touchstart、touchmove、touchend)或鼠标事件(mousedown、mousemove、mouseu…

js实现自举

js实现自举

实现 JavaScript 自举的方法 JavaScript 自举(Bootstrap)通常指通过 JavaScript 动态加载自身或依赖的脚本,实现运行时环境的初始化或扩展。以下是几种常见实现方式…

js实现投球

js实现投球

实现投球动画的基本思路 使用JavaScript和CSS动画结合的方式模拟投球效果。核心是通过改变元素的位置、旋转和缩放属性,配合定时器或CSS过渡实现平滑动画。 创建基础HTML结构 <…