Primzahl in Python?

4 Antworten

elif zahl % n == 0:

Hier überprüfst du, ob 2 durch 2 teilbar ist.

while n <= zahl:
 n += 1

Wenn ja führst du diese Sinnlosschleife aus

print(False)

und gibst dein "false" aus

nehm dir mal ein zettel und stift und folge deinen anweisungen

while n <= zahl:
    n += 1
    print(False)

ist doch kompletter unsinn

und gewöhne dir codeblock formatierung an .

das ließt sich so als denkest du das eine zahl eine primzahl ist wenn sie nur nicht durch 2 teilbar ist .

import sys

zahl = int(sys.argv[1])

# Nehmen wir erst einmal an, es sei eine Primzahl
# und dann schauen wir, ob wir einen Grund finden
# warum dies doch nicht so ist.
ist_primzahl = True

# Erster Grund: Die Zahl ist kleiner oder gleich 1
if zahl <= 1:
    ist_primzahl = False

# Falls das nicht so ist, müssen wir genauer schauen
else:
    # Gehe durch alle Zahlen ab 2, die kleiner sind als die
    # Zahl selbst und checke, ob die Zahl durch diese
    # Testzahl i teilbar ist
    for i in range(2, zahl):
        if zahl % i == 0:
            ist_primzahl = False
            # Falls ja, muss man nicht weiter
            # machen mit der for-Schleife
            break

# Gib dein Ergebnis aus
print(ist_primzahl)

Ich hoffe dieses Code-Beispiel, welches ich versucht habe so nah an deinem Code zu lassen wie möglich, hilft dir zu verstehen, wie man dieses Problem löst.

Die 2 wird hier als True herauskommen, weil eine for-Schleife, die die range(2, 2) abarbeitet, nicht ein einziges Mal ausgeführt werden wird.

Hinweis: Noch besser wäre es, wenn du die for-Schleife nicht für alle Zahlen kleiner als "zahl" laufen lässt, sondern nur bis zur Wurzel der Zahl! Denk mal darüber nach, wieso das so ist.

Kürzen wir das Ganze ab:

Head to the basics.

Was möchtest Du wissen?