ホームページ  >  記事  >  バックエンド開発  >  Python で素数を効率的に生成するにはどうすればよいですか?

Python で素数を効率的に生成するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-13 04:07:49530ブラウズ

How can I generate prime numbers in Python efficiently?

ロジックが改善された Python の単純な素数ジェネレーター

指定されたコードは素数を生成することを目的としていますが、問題が発生します。以下に問題の詳細と機能拡張を加えた改訂コードを示します:

問題と解決策:

  • 素数を印刷するための不正な条件: if count % x != 0 を if isprime に置き換えると、素数のみが出力されます。
  • 間違ったループ処理: continue の代わりに Break を使用すると、非実行時にループを終了できます。素因数が見つかりました。
  • テスト範囲: 範囲を 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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。