Primzahlreihen in Python drucken
Um eine Reihe von Primzahlen innerhalb eines bestimmten Bereichs zu drucken, besteht ein gängiger Ansatz darin, durch zu iterieren Bereich und prüfen Sie, ob jede Zahl eine Primzahl ist. Der bereitgestellte Code, der dies zu erreichen versucht, gibt jedoch eine Reihe ungerader Zahlen anstelle von Primzahlen aus. Lassen Sie uns das Problem untersuchen und eine optimale Lösung finden.
Der bereitgestellte Code durchläuft den Bereich (1, 101) und prüft für jede Zahl die Teilbarkeit bis zur Zahl selbst. Hier liegt der Fehler. Primzahlen sind nur durch 1 und sich selbst teilbar, daher müssen Sie nur Zahlen von 2 bis zur Zahl selbst überprüfen.
Der korrigierte Code sollte wie folgt lauten:
<code class="python">for num in range(2, 101): prime = True for i in range(2, num): if (num % i == 0): prime = False if prime: print(num)</code>
Dieser überarbeitete Code Initialisiert eine boolesche Flag-Primzahl für jede Zahl auf True und überprüft Zahlen bis zur Zahl selbst, um eine ordnungsgemäße Primzahlidentifizierung sicherzustellen.
Alternativ wäre ein prägnanterer und pythonischer Ansatz:
<code class="python">for num in range(2, 101): if all(num % i != 0 for i in range(2, num)): print(num)</code>
Dieser Code verwendet einen Generatorausdruck innerhalb der all()-Funktion, um zu bestimmen, ob die Zahl durch beliebige Zahlen von 2 bis sich selbst teilbar ist, ausgenommen sich selbst. Wenn keine solchen Teiler vorhanden sind, wird die Zahl als Primzahl gedruckt.
Zur Steigerung der Effizienz können Sie nur Teiler bis zur Quadratwurzel der Zahl prüfen. Denn wenn eine Zahl einen größeren Faktor hat, muss sie auch einen kleineren entsprechenden Faktor haben. Der folgende Code beinhaltet diese Optimierung:
<code class="python">import math for num in range(2, 101): if all(num % i != 0 for i in range(2, int(math.sqrt(num)) + 1)): print(num)</code>
Um die Effizienz weiter zu verbessern, können Sie schließlich die Prüfung gerader Zahlen überspringen, da Primzahlen größer als 2 immer ungerade sind. Der folgende Code spiegelt diese Optimierung wider:
<code class="python">import math print(2) for num in range(3, 101, 2): if all(num % i != 0 for i in range(3, int(math.sqrt(num)) + 1, 2)): print(num)</code>
Das obige ist der detaillierte Inhalt vonWie drucke ich Primzahlenreihen in Python richtig?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!