zur eingegeben Zahl aus. Nun die Funktion ist_prim(n) funktioniert, aber die funktion prim_list funktioniert nicht, wie sie soll. Wenn ich z.B. 10 eingebe,
gibt er dann als Primzahlen bis 10 nur 2 aus, obwohl auch noch die Zahlen 3,5 und 7 dazugehören. Könntet ihr mir bitte helfen?
Was stimmt den da nicht, ich verzweifle langsam...
Code: Alles auswählen
# Primzahlen.py
# Prüfung ob Primzahl und Ausgabe aller Primzahlen bis zu dieser Zahl
def ist_prim(n):
""" Prüfung ob n eine Primzahl ist """
teiler = 3
menge = 0
if n > 2:
if n % 2 != 0:
reichweite = n // 2
while teiler <= reichweite and menge == 0:
if zahl % teiler == 0:
menge += 1
teiler += 2
reichweite = zahl // teiler
if menge == 1 or zahl % 2 == 0:
return False
else:
return True
else:
if n == 2:
return True
return False
def prim_list(n):
""" Erzeugung von einer Liste von Primzahlen bis zu n """
primzahlen_n = []
if n >= 2:
primzahlen_n.append(2)
for k in range(3,n+1):
if ist_prim(k):
primzahlen_n.append(k)
return primzahlen_n
# Hauptprogramm
zahl = int(input("Bitte geben sie eine natürliche Zahl ein: "))
print("Primzahl:","ja" if ist_prim(zahl) else "nein")
print("Alle Primzahlen bis zu dieser Zahl:",end=" ")
for k in prim_list(zahl):
print(k,end=" ")