Heim >Backend-Entwicklung >Python-Tutorial >Wie kann ich in Python effizient Primzahlen generieren?

Wie kann ich in Python effizient Primzahlen generieren?

Susan Sarandon
Susan SarandonOriginal
2024-11-13 04:07:49610Durchsuche

How can I generate prime numbers in Python efficiently?

Einfacher Primzahlengenerator in Python mit verbesserter Logik

Der angegebene Code zielt darauf ab, Primzahlen zu generieren, stößt jedoch auf Probleme. Hier ist eine Ausarbeitung der Probleme und ein überarbeiteter Code mit Verbesserungen:

Probleme und Lösungen:

  • falsche Bedingung für das Drucken von Primzahlen: Indem wir if count % x != 0 durch if isprime ersetzen, geben wir die Primzahlen aus Nur.
  • falsche Schleifenbehandlung:Die Verwendung von break anstelle von continue ermöglicht es uns, die Schleife zu beenden, wenn ein Nicht-Primzahlfaktor angetroffen wird.
  • Testbereich: Durch die Erweiterung des Bereichs auf int(math.sqrt(count) 1) wird Gründlichkeit gewährleistet Tests.
  • optimiertes Sieve of Eratosthenes: Für eine effizientere Generierung enthält der Code den Sieve of Eratosthenes-Algorithmus (separater Codeausschnitt als Referenz bereitgestellt).

Hier ist das überarbeitete Python-Skript:

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

Optimized Sieve von Eratosthenes:

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

Das obige ist der detaillierte Inhalt vonWie kann ich in Python effizient Primzahlen generieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn