Was haltet ihr von diesem Programm (Python)?
Damit soll sich eine Primzahl bestimmen lassen. Ist das zuverlässig? Ich hab es jetzt ein paar mal getestet und es scheint zu funktionieren, aber man weiß nie :)
x = int(input("Welches ist die Zahl, die Sie testen wollen?“))
if x/2 == int(x/2):
print("Das ist keine Primzahl")
elif x/3 == int (x/3):
print("Das ist keine Primzahl")
elif x/5 == int (x/5):
print("Das ist keine Primzahl")
elif x/7 == int(x/7):
print("Das ist keine Primzahl")
else:
print("Das ist eine Primzahl")
6 Antworten
Dann gib mal 121 ein, welches 11*11 ist...
Nein, das Programm ist nicht zuverlässig. von den unendlich vielen Primzahlen werden nur 4 als Teiler geprüft!
Primzahlen sind nicht so einfach wie man denkt. Ein Standard Algorithmus, welcher zur Bestimmung verwendet wird, ist das Siebt von Atkin. Hier ein Wikipedia Eintrag dazu: https://de.wikipedia.org/wiki/Sieb_von_Atkin
Dann ist es doch unmöglich so ein Programm zu schreiben, wenn es unendlich viele Teiler gibt 🤔
Jede endliche Zahl hat eine endliche Anzahl von Teilern. und jede endliche Zahl muss nur mit den Prifaktoren geprüft werden, welche kleiner sind, als die Zahl (bzw. kleiner oder gleich der Wurzel der Zahl)
Kann man so machen.
Für Zahlen bis 1 Mio ist das Verfahren der
https://de.wikipedia.org/wiki/Probedivision
durchaus üblich.
https://de.wikipedia.org/wiki/Primzahltest#Bekannte_Primzahltest-Verfahren
Gib mal 121 ein (:-(((
Das Programm ist für Primzahlen <100 geeignet
Es müßte erweiter werden mit den nachfolgenden Primzahlen 11, 13, 17, ...
elif x/11 == int(x/11):
print(" Das ist keine Primzahl")
elif x/13 == int(x/13):
print(" Das ist keine Primzahl")
.....
angenommen x ist eine Primzahl, dann musst du jede Zahl von 1 bis einschließlich x-1 checken, ob x mit der jetzigen Zahl teilbar ist.
so würde ich es machen
Pseudocode:
x = 121
bool_primzahl = False
for i in range(1,121):
If x%i == 0:
bool_primzahl = True
Break
print(bool_primzahl)
dann musst du jede Zahl von 1 bis einschließlich x-1 checken
Es genügt, mit jeder ungeraden Zahl bis floor(sqrt(x)) zu testen.
Wenn du ein einfaches Programm zum testen brauchst, dann nimm das hier auf dieser Seite:
Dann ist natürlich vorbei…