当前位置:首页 > JavaScript

质数js实现

2026-03-14 15:56:56JavaScript

判断质数的基本方法

质数是指大于1的自然数,且只能被1和它本身整除。在JavaScript中,可以通过以下方式实现质数判断:

质数js实现

function isPrime(num) {
    if (num <= 1) return false;
    if (num === 2) return true;
    if (num % 2 === 0) return false;

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

优化算法

通过数学优化可以减少循环次数。例如,只需检查到该数的平方根即可,因为如果存在大于平方根的因数,必然对应一个小于平方根的因数。

质数js实现

function isPrimeOptimized(num) {
    if (num <= 1) return false;
    if (num <= 3) return true;
    if (num % 2 === 0 || num % 3 === 0) return false;

    let i = 5;
    let w = 2;
    while (i * i <= num) {
        if (num % i === 0) return false;
        i += w;
        w = 6 - w; // 交替检查6k±1的形式
    }
    return true;
}

生成质数列表

如果需要生成一定范围内的所有质数,可以使用埃拉托斯特尼筛法(Sieve of Eratosthenes):

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

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

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

实际应用示例

这些方法可以用于解决实际问题,例如查找范围内的质数或验证用户输入是否为质数:

console.log(isPrime(17)); // 输出: true
console.log(sieveOfEratosthenes(30)); // 输出: [2, 3, 5, 7, 11, 13, 17, 19, 23, 29]

通过以上方法,可以高效地实现质数判断和生成质数列表的功能。

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

相关文章

js 实现倒计时

js 实现倒计时

实现倒计时的基本方法 使用 JavaScript 实现倒计时可以通过 setInterval 或 setTimeout 结合日期计算来完成。以下是两种常见实现方式。 使用 setInterval 实…

js实现全屏

js实现全屏

实现全屏的基本方法 使用JavaScript实现全屏功能主要依赖Element.requestFullscreen()方法。现代浏览器均支持此API,但不同浏览器可能需要添加前缀。 // 触发全屏…

js 实现继承

js 实现继承

原型链继承 通过让子类的原型对象指向父类的实例来实现继承。子类实例可以访问父类原型上的属性和方法。 function Parent() { this.name = 'parent'; } Par…

js实现选项卡

js实现选项卡

实现选项卡的基本思路 选项卡通常由一组标签和对应的内容面板组成。点击标签时,显示对应的内容面板,隐藏其他面板。实现这一效果需要结合HTML结构、CSS样式和JavaScript交互逻辑。 HTML结…

js如何实现继承

js如何实现继承

原型链继承 通过将子类的原型指向父类的实例实现继承。子类实例能够访问父类原型上的属性和方法。 function Parent() { this.name = 'parent'; } Parent…

js分组实现

js分组实现

分组实现方法 在JavaScript中,可以通过多种方式实现数组或对象的分组操作。以下是几种常见的方法: 使用Array.prototype.reduce() 通过reduce方法可以轻松实现数组分…