首页 > 后端开发 > Python教程 > 如何在Python中有效地生成素数?

如何在Python中有效地生成素数?

Susan Sarandon
发布: 2024-11-13 04:07:49
原创
602 人浏览过

How can I generate prime numbers in Python efficiently?

Python 中具有改进逻辑的简单素数生成器

给定的代码旨在生成素数,但遇到问题。以下是问题的详细说明以及经过增强的修订代码:

问题和解决方案:

  • 打印素数的不正确条件:将 if count % x != 0 替换为 if isprime,我们只打印素数。
  • 不正确的循环处理: 使用 break 而不是 continue 允许我们在非循环时终止循环。遇到质因数。
  • 测试范围:将范围扩展到 int(math.sqrt(count) 1) 确保彻底测试。
  • 优化的筛选埃拉托色尼:为了更高效地生成,代码结合了埃拉托色尼筛法算法(提供单独的代码片段供参考)。

这是修改后的 Python 脚本:

import math

def main():
    count = 3

    while True:
        isprime = True

        for x in range(2, int(math.sqrt(count) + 1)):
            if count % x == 0:
                isprime = False
                break

        if isprime:
            print(count)

        count += 1
登录后复制

优化的埃拉托色尼筛:

def gen_primes():
    D = {}
    q = 2

    while True:
        if q not in D:
            yield q
            D[q * q] = [q]
        else:
            for p in D[q]:
                D.setdefault(p + q, []).append(p)
            del D[q]

        q += 1
登录后复制

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

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