Problem bei einem Primzahlprogramm
Verfasst: Sonntag 20. Juni 2010, 13:44
Als HA in Info muss ich ein Pythonprogramm schreiben. Das soll überprüfen ob eine eingegebene Zahl eine Primzahl ist und gibt danach alle Primzahlen bis
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...
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=" ")