Heim  >  Artikel  >  Backend-Entwicklung  >  Wie optimiert man den Primzahldruck in Python für genaue Ergebnisse?

Wie optimiert man den Primzahldruck in Python für genaue Ergebnisse?

DDD
DDDOriginal
2024-10-21 13:34:31729Durchsuche

How to Optimize Prime Number Printing in Python for Accurate Results?

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!

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