Seite 1 von 1

Primzahlaufgabe

Verfasst: Sonntag 24. November 2019, 20:44
von mto99
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)

Re: Primzahlaufgabe

Verfasst: Sonntag 24. November 2019, 21:00
von Sirius3
`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.

Re: Primzahlaufgabe

Verfasst: Sonntag 24. November 2019, 21:03
von __deets__
@mto99: warum ein neuer Post mit dem gleichen Problem? Und warum keine Antwort auf meine Frage aus dem letzten Post? Wie sind Primzahlen definiert?