def teiler_ermitteln(zahl):
''' Soll alle Teiler einer ganzen Zahl ermitteln
und als Liste zurueckgeben.
'''
liste = []
liste.extend([1,zahl])
ende = zahl
i = 1
while i < ende:
i += 1
if i == ende:
break
if (zahl / i) % 1 == 0.0:
liste.append(i)
if int(zahl/i) != i:
liste.append(int(zahl/i))
ende = int(zahl/i)
return liste
ergebnis = teiler_ermitteln(72)
ergebnis.sort()
print(ergebnis)
Das Skript arbeitet so nur für natürliche Zahlen größer 0. Da aber
gilt, so gilt auch
und
. Man kann sich also bei der Untersuchung des Teilbarkeitsbegriffs auf natürliche Zahlen beschränken.Um die Programmieraufgabe allerdings zu lösen, reicht diese Version vollkommen aus:
def teiler_ermitteln(zahl):
''' Soll alle Teiler einer ganzen Zahl ermitteln
und als Liste zurueckgeben.
'''
liste = []
liste.extend([1,zahl])
ende = zahl
i = 1
while i < ende:
i += 1
if i == ende:
break
if (zahl / i) % 1 == 0.0:
liste.append(i)
if int(zahl/i) != i:
liste.append(int(zahl/i))
ende = int(zahl/i)
liste.sort()
return liste
for i in range(1,10000):
teiler = teiler_ermitteln(i)
teiler.pop()
summe = sum(teiler)
if summe > i and i % 2 != 0:
print("{} ist abundant.".format(i))
elif summe == i:
print("{} ist vollkommen.".format(i))
Ich denke allerdings, dass in der eigentlichen Funktion noch deutliches Optimierungspotential steckt.
Keine Kommentare:
Kommentar veröffentlichen