当前位置:首页 > 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 是一个基于 Vue.js 的跨平台开发框架,支持快速构建多端应用(如微信小程序、H5、App 等)。虽然 Uniapp 本身不直接提供混合现实(MR)功能…

js实现素数

js实现素数

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

如何求素数java

如何求素数java

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

java如何定义素数

java如何定义素数

定义素数的方法 素数是大于1的自然数,且只能被1和它本身整除。在Java中可以通过以下方法判断或定义素数: 基础判断方法 通过遍历2到n-1之间的数,检查是否能被整除: publi…

java如何算素数

java如何算素数

判断素数的基本方法 素数是大于1的自然数,除了1和它本身外没有其他约数。在Java中可以通过循环和条件判断实现素数检测。 public static boolean isPrime(int num)…

如何打印素数JAVA

如何打印素数JAVA

打印素数的Java实现 素数是只能被1和自身整除的自然数。以下是几种在Java中打印素数的方法: 方法1:基础检查法 通过遍历每个数字并检查其是否为素数来实现。对于每个数字n,检查2到n-1之间是否…