Python :: Aufgabe #47 :: Lösung #5
6 Lösungen

#47
vollkommene Zahl (Mathematisches Problem)
Anfänger - Python
von bibir
- 03.09.2014 um 08:21 Uhr
Man nennt eine natürliche Zahl N "vollkommen", wenn die Summe aller echten Teiler von N gleich N ist.
Zum Beispiel ist 28 eine vollkommene Zahl, da 1 + 2 + 4 + 7 + 14 = 28 ist.
Schreibe ein Programm/Skript, das beliebig oft eine Zahl N (mit 0 < N < 100000) einliest und feststellt, ob N eine vollkommene Zahl ist. Falls ja, soll das Programm N und die zugehörenden echten Teiler ausgeben, andernfalls ist nur N und die Meldung "ERFUELLT DIE BEDINGUNG NICHT" zu drucken.
Zum Beispiel ist 28 eine vollkommene Zahl, da 1 + 2 + 4 + 7 + 14 = 28 ist.
Schreibe ein Programm/Skript, das beliebig oft eine Zahl N (mit 0 < N < 100000) einliest und feststellt, ob N eine vollkommene Zahl ist. Falls ja, soll das Programm N und die zugehörenden echten Teiler ausgeben, andernfalls ist nur N und die Meldung "ERFUELLT DIE BEDINGUNG NICHT" zu drucken.
#5

von egalAG (20 Punkte)
- 19.11.2016 um 17:15 Uhr

import math #dies ist die richtige Lösung def findeTeiler(x): teiler=[] wurzel=math.sqrt(x) for t in range(1,int(wurzel)+1): #verkürzt die rechenzeit bei großen zahlen s = x // t if s*t == x: teiler.append(s) teiler.append(t) if wurzel in teiler: del teiler[teiler.index(wurzel)] teiler.sort() del teiler[-1] return teiler while True: print('gib eine zahl ein') zahl = int(input()) teiler = findeTeiler(zahl) summe = sum(teiler) if summe == zahl: print('{0} ist eine vollkommene Zahl'.format(zahl)) print(teiler) else: print('{0} ist keine vollkommene Zahl'.format(zahl)) print(teiler)
Kommentare:
Für diese Lösung gibt es noch keinen Kommentar
Seite 1 von 0
1