首页 > Java > java教程 > 正文

如何高效生成素数?

Patricia Arquette
发布: 2024-11-03 20:43:02
原创
180 人浏览过

How Can We Efficiently Generate Prime Numbers?

优雅高效地生成素数

在编程领域,寻找一种优雅且高效的方式来生成素数是一个经典挑战。让我们探索一种在简洁性和性能之间取得平衡的方法。

考虑使用素数定理,该定理将小于或等于 n 的素数数量估计为 pi(n) ≈ n / log(n) 。该估计提供了可用于识别素数的筛子大小的上限。

筛法,也称为埃拉托斯特尼筛法,迭代一系列数字并消除所有非 -通过将它们标记为复合素数。对于此任务,我们可以利用 BitSet 来表示素数集合,每个位对应于范围内的一个数字。

下面是这种优雅且高效的素数生成方法的 Java 实现:

<code class="java">public static BitSet computePrimes(int limit) {
    BitSet primes = new BitSet();
    primes.set(0, false);
    primes.set(1, false);
    primes.set(2, limit, true);
    for (int i = 0; i * i < limit; i++) {
        if (primes.get(i)) {
            for (int j = i * i; j < limit; j += i) {
                primes.clear(j);
            }
        }
    }
    return primes;
}</code>
登录后复制

这种方法在典型笔记本电脑上大约一秒内有效地生成前一百万个素数。其精度和速度的结合使其成为在各种计算场景中生成素数的宝贵工具。

以上是如何高效生成素数?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板