Primzahlaufgabe

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
mto99
User
Beiträge: 15
Registriert: Mittwoch 30. Oktober 2019, 17:35

Hallo

Ich muss eine Funktion programmieren, die die eingegebene Zahl auf eine Primzahl prüft:
Bisjetzt habe ich den Code (unten) geschreiben, aber es prüft nicht richtig. ZB. sagt es bei 5 , dass es False (keine Primzahl) ist oder bei 1 True (eine Primzahl) kommt.
Vielen Dank schon im voraus

Code: Alles auswählen

def primzahl(inpt):
    
    div = 1
    for i in range(1,5):
        div += 1
        calc = inpt % div
        if inpt == div:
            continue
        else:
            pass
        if calc == 0:
            break
    if calc != 0:
        return True
    elif calc == 0:
        return False
    
primzahl(5)
Sirius3
User
Beiträge: 18272
Registriert: Sonntag 21. Oktober 2012, 17:20

`i` wird nicht verwendet, dafür zählst Du zusätzlich `div` händisch. Ein else-Block der nur aus `pass` besteht ist überflüssig, und `continue´ sollte man nur nutzen, wenn es wirklich nötig ist. Die Bedingung `elif` ist exakt das Gegenteil von der `if`-Bedingung, sollte also ein `else` sein. Wenn der Block aber eh nur aus einem `return` mit einem boolschen Wert ist, kann man gleich die `if`-Bedingung benutzen.
Bleibt also:

Code: Alles auswählen

def primzahl(inpt):
    for div in range(2,6):
        calc = inpt % div
        if inpt != div and calc == 0:
            break
    return calc != 0
Ist es aber sowieso der letzte Schleifendurchgang, wie bei `5` ist das `break` gar nicht nötig, um die Bedingung für `nicht-prim` zu erfüllen. `1` ist immer ein Sonderfall. Bei größeren Zahlen funktioniert der Primzahltest dann aber nicht mehr.
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

@mto99: warum ein neuer Post mit dem gleichen Problem? Und warum keine Antwort auf meine Frage aus dem letzten Post? Wie sind Primzahlen definiert?
Antworten