当前位置:首页 > JavaScript

质数js实现

2026-02-01 16:52:06JavaScript

质数判断的 JavaScript 实现

质数是指大于1的自然数,且只能被1和它本身整除的数。以下是几种常见的质数判断方法及对应的 JavaScript 实现。

基础判断方法

通过遍历2到n-1之间的所有数,判断是否能整除n。

function isPrime(n) {
  if (n <= 1) return false;
  for (let i = 2; i < n; i++) {
    if (n % i === 0) return false;
  }
  return true;
}

优化方法:减少遍历范围

只需遍历2到√n之间的数,因为如果n有大于√n的因数,必然对应一个小于√n的因数。

function isPrimeOptimized(n) {
  if (n <= 1) return false;
  for (let i = 2; i <= Math.sqrt(n); i++) {
    if (n % i === 0) return false;
  }
  return true;
}

进一步优化:跳过偶数

除2外,所有偶数都不是质数,可以跳过偶数判断。

function isPrimeFurtherOptimized(n) {
  if (n <= 1) return false;
  if (n === 2) return true;
  if (n % 2 === 0) return false;
  for (let i = 3; i <= Math.sqrt(n); i += 2) {
    if (n % i === 0) return false;
  }
  return true;
}

生成质数列表

生成从2到n的所有质数列表,可以使用埃拉托斯特尼筛法(Sieve of Eratosthenes)。

质数js实现

function sieveOfEratosthenes(n) {
  const primes = new Array(n + 1).fill(true);
  primes[0] = primes[1] = false;
  for (let i = 2; i <= Math.sqrt(n); i++) {
    if (primes[i]) {
      for (let j = i * i; j <= n; j += i) {
        primes[j] = false;
      }
    }
  }
  return primes
    .map((isPrime, index) => (isPrime ? index : null))
    .filter((num) => num !== null);
}

实际应用示例

console.log(isPrime(7)); // true
console.log(isPrimeOptimized(9)); // false
console.log(isPrimeFurtherOptimized(2)); // true
console.log(sieveOfEratosthenes(20)); // [2, 3, 5, 7, 11, 13, 17, 19]

这些方法可以根据实际需求选择使用,基础方法适用于简单场景,优化方法更适合性能敏感的应用。

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

相关文章

js实现点击显示和隐藏

js实现点击显示和隐藏

实现点击显示和隐藏的JavaScript方法 使用classList.toggle切换类名 通过添加/移除CSS类控制元素的显示与隐藏,需提前在CSS中定义隐藏样式(如display: none)。…

js实现图

js实现图

JavaScript 实现图的常用方法 在 JavaScript 中,图(Graph)可以通过多种方式实现,常见的包括邻接表(Adjacency List)和邻接矩阵(Adjacency Matrix…

js画图实现

js画图实现

使用Canvas API绘制图形 Canvas是HTML5提供的绘图API,通过JavaScript操作Canvas元素可以绘制各种图形。以下是一个简单的示例: <canvas id="myC…

js实现授权

js实现授权

授权流程设计 授权流程通常涉及前端与后端的交互,常见方案包括OAuth2.0、JWT等。以JWT为例的典型流程: 用户提交凭证(如用户名密码)到认证服务 服务端验证通过后生成包含用户信息的JWT令牌…

js实现密码

js实现密码

密码强度验证 使用正则表达式验证密码强度是一种常见方法。以下代码检查密码是否包含大小写字母、数字和特殊字符,且长度至少为8位: function checkPasswordStrength(pass…

节流js实现

节流js实现

节流(Throttle)的实现原理 节流是一种限制函数执行频率的技术,确保函数在一定时间间隔内最多执行一次。适用于高频触发事件(如滚动、输入、窗口调整等)的场景。 基础实现方式 使用时间戳判断是否执…