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