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



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