Reihen von Primzahlen in Python drucken
Das Identifizieren von Primzahlen ist ein grundlegendes Konzept in der Mathematik und Programmierung. Eine Primzahl ist eine ganze Zahl größer als 1, die kein Produkt zweier kleinerer ganzer Zahlen ist. Der folgende Python-Code zielt darauf ab, eine Reihe von Primzahlen von 1 bis 100 auszugeben.
Code und Problem
Ein gängiger Ansatz zum Finden von Primzahlen ist das Durchlaufen von Zahlen von 2 bis n. Überprüfen Sie für jede Zahl, ob sie durch eine beliebige Zahl zwischen 2 und sich selbst (außer 1) teilbar ist. Wenn sie teilbar ist, ist sie keine Primzahl; Andernfalls ist dies der Fall.
Betrachten Sie den folgenden Code, der Primzahlen zwischen 1 und 100 drucken soll:
<code class="python">for num in range(1, 101): for i in range(2, num): if num % i == 0: break else: print(num) break</code>
Dieser Code stößt jedoch auf ein Problem, bei dem ungerade Zahlen anstelle von Primzahlen gedruckt werden. Der Fehler entsteht, weil die äußere Schleife nicht nur Primzahlen, sondern auch zusammengesetzte Zahlen (Vielfache anderer Zahlen) durchläuft. Folglich wird die Bedingung if num % i != 0 für ungerade zusammengesetzte Zahlen wie 9 wahr, was zur fehlerhaften Ausgabe aller ungeraden Zahlen führt.
Lösung und Optimierung
Um dies zu korrigieren, müssen wir den Code ändern, um explizit nach Primzahlen zu suchen. Hier ist die überarbeitete Version:
<code class="python">for num in range(2, 101): # Start at 2 as 1 is not prime prime = True for i in range(2, num): if num % i == 0: prime = False if prime: print(num)</code>
In diesem Code führen wir eine boolesche Variable Prim ein, die zunächst auf True gesetzt ist. Anschließend überprüfen wir jede Zahl zwischen 2 und num-1 (außer num) mithilfe der inneren Schleife. Wenn num durch eine beliebige Zahl i teilbar ist, setzen wir prim auf False, um anzuzeigen, dass es sich nicht um eine Primzahl handelt. Wenn die Primzahl nach der inneren Schleife True bleibt, geben wir num aus.
Dieser Code identifiziert genau Primzahlen innerhalb des angegebenen Bereichs. Es kann jedoch weiter optimiert werden, indem nur Teiler bis zur Quadratwurzel von num überprüft werden. Dies liegt daran, dass jeder Faktor, der größer als die Quadratwurzel ist, einen entsprechenden Faktor kleiner als die Quadratwurzel haben würde.
Hier ist die optimierte Version:
<code class="python">for num in range(2, 101): prime = True for i in range(2, int(math.sqrt(num)) + 1): if num % i == 0: prime = False if prime: print(num)</code>
Durch die Verwendung dieser Optimierungen wird der Code effektiv gedruckt die Reihe der Primzahlen zwischen 1 und 100.
Das obige ist der detaillierte Inhalt vonWie optimiert man den Primzahldruck in Python für genaue Ergebnisse?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!