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

6 Lösungen Lösungen öffentlich
#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.
#5
vote_ok
von egalAG (20 Punkte) - 19.11.2016 um 17:15 Uhr
Quellcode ausblenden Python-Code
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

Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben
2106820

Du scheinst einen AdBlocker zu nutzen. Ich würde mich freuen, wenn du ihn auf dieser Seite deaktivierst und dich davon überzeugst, dass die Werbung hier nicht störend ist.