首頁 > 後端開發 > Python教學 > 如何在Python中有效地產生質數?

如何在Python中有效地產生質數?

Susan Sarandon
發布: 2024-11-13 04:07:49
原創
607 人瀏覽過

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
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板