当前位置:首页 > JavaScript

js 实现现实素数

2026-02-02 16:30:20JavaScript

判断素数的方法

素数是大于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;
}

生成素数列表

要生成一定范围内的素数列表,可以结合上述判断方法:

function generatePrimes(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;
  }, []);
}

性能比较

对于小范围数字(如<1000),简单判断法足够高效。对于大范围数字(如>10000),筛法性能优势明显。测试10万以内的素数:

js  实现现实素数

console.time('Simple check');
generatePrimes(100000);
console.timeEnd('Simple check');

console.time('Sieve');
sieveOfEratosthenes(100000);
console.timeEnd('Sieve');

标签: 素数现实
分享给朋友:

相关文章

uniapp混合现实

uniapp混合现实

Uniapp混合现实开发指南 Uniapp作为跨平台开发框架,可通过插件和原生能力扩展实现混合现实(MR)功能。以下为关键实现方法和技术要点: 集成AR/VR插件 Uniapp支持通过uni_mod…

uniapp混合现实

uniapp混合现实

Uniapp 混合现实开发概述 Uniapp 是一个基于 Vue.js 的跨平台开发框架,支持快速构建多端应用(如微信小程序、H5、App 等)。虽然 Uniapp 本身不直接提供混合现实(MR)功能…

js实现素数

js实现素数

判断一个数是否为素数 素数是指大于1的自然数,除了1和它本身外,不能被其他自然数整除。以下是一个简单的JavaScript函数来判断一个数是否为素数: function isPrime(num) {…

js  实现现实素数

js 实现现实素数

判断素数的方法 素数是指大于1的自然数,除了1和它本身外,不能被其他自然数整除。以下是几种常见的判断素数的方法。 基础方法 通过遍历2到n-1之间的所有整数,检查是否有能整除n的数。如果没有,则n是…

如何求素数java

如何求素数java

判断素数的基本方法 素数是大于1的自然数,且只能被1和自身整除。在Java中,可以通过以下方法判断一个数是否为素数: public static boolean isPrime(int num)…