当前位置:首页 > JavaScript

质数js实现

2026-02-01 16:52:06JavaScript

质数判断的 JavaScript 实现

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

基础判断方法

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

质数js实现

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的因数。

质数js实现

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)。

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方法 生成随机验证码 使用Math.random()生成随机字符串,结合数字和字母: function generateCaptcha() { const cha…

js实现换肤

js实现换肤

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

js手势实现

js手势实现

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

js实现图

js实现图

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

js实现密码

js实现密码

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

节流js实现

节流js实现

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