Wie drucke ich Primzahlenreihen in Python richtig?

Linda Hamilton
Freigeben: 2024-10-21 13:16:02
Original
638 Leute haben es durchsucht

How to Correctly Print Prime Number Series in Python?

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Quelle:php
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