Heim > Backend-Entwicklung > Python-Tutorial > Wie kann ich einen einfachen Primzahlgenerator in Python optimieren?

Wie kann ich einen einfachen Primzahlgenerator in Python optimieren?

Mary-Kate Olsen
Freigeben: 2024-11-15 09:27:02
Original
896 Leute haben es durchsucht

How Can I Optimize a Simple Prime Number Generator in Python?

Optimierung eines einfachen Primzahlgenerators in Python

Der bereitgestellte Python-Code zielt darauf ab, Primzahlen zu generieren, muss jedoch aus Effizienzgründen verbessert werden.

Probleme mit dem Originalcode:

  1. Die Schleife prüft auf Teilbarkeit, gibt die Anzahl jedoch falsch aus, selbst wenn ein Teiler gefunden wird.
  2. Die continue-Anweisung beendet die aktuelle Iteration, sollte aber durch break ersetzt werden, um die Suche ganz zu beenden, wenn ein Teiler gefunden wird.

Verbessert Code:

import math

def main():
    count = 3
    while True:
        isprime = True
        for x in range(2, math.ceil(math.sqrt(count)) + 1):
            if count % x == 0: 
                isprime = False
                break
        if isprime:
            print(count)
        count += 1
Nach dem Login kopieren

Erklärung:

  • Die äußere Schleife erhöht den Zählwert, um auf die nächste mögliche Primzahl zu testen.
  • Die innere Schleife läuft nun bis zur Quadratwurzel der Zählung, da jeder Teiler, der größer als die Quadratwurzel ist, einen entsprechenden Teiler unterhalb des Quadrats hat Wurzel.
  • Wenn die Anzahl durch ein beliebiges x teilbar ist, wird das isprime-Flag auf False gesetzt und die innere Schleife wird unterbrochen.
  • Wenn keine Teiler gefunden werden, ist die Anzahl eine Primzahl und wird gedruckt .

Erweiterte Prime Generation:

Für eine effizientere Prime Generation ist die Empfohlen wird ein Sieb aus Eratosthenes. Hier ist eine optimierte Python-Implementierung mit Kommentaren:

def gen_primes():
    D = {}
    q = 2
    while True:
        if q not in D:
            yield q
            for later in range(q * q, 1000000, q):
                D[later] = [q]
        else:
            for later in range(q + D[q][0], 1000000, q):
                D.setdefault(later, []).append(q)
            del D[q]
        q += 1
Nach dem Login kopieren

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

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage