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

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

Susan Sarandon
Susan Sarandon原创
2024-11-13 04:07:49605浏览

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn