Python :: Aufgabe #287

3 Lösungen Lösungen öffentlich

Teilersumme natürlicher Zahlen

Anfänger - Python von JKooP - 04.10.2020 um 11:49 Uhr
Schreibe eine Methode/Funktion, mit der es möglich ist zu prüfen, ob es sich bei einer natürlichen Zahl um eine defiziente,
vollkommende oder abundante Zahl handelt.
Betrachtet wird die Summe aller Teiler ohne die Zahl selbst.

Beispiel Zahl 80:

1 + 2 + 4 + 5 + 8 + 10 + 20 + 40 = 106 --> abundant, da

Summe kleiner als Zahl --> defizient
Summe gleich Zahl --> vollkommen
Summe größer als Zahl --> abundant

Viel Spaß

Lösungen:

vote_ok
von Marty3000 (680 Punkte) - 04.11.2020 um 20:46 Uhr
Quellcode ausblenden Python-Code
def get_teiler(n: int):
    all_teiler = []
    for i in range(2, int(n / 2) + 1):
        if n / i == int(n / i):
            all_teiler.append(i)
    return all_teiler


def def_vol_abu(n: int):
    at = get_teiler(n)
    txt: str = "Zahl %d:\n 1" % n
    summ: int = 1
    for i in at:
        summ += i
        txt += " + %d" % i
    txt += " = %d --> " % summ
    if summ < n:
        txt += "defizient\n"
    if summ == n:
        txt += "vollkommen\n"
    if summ > n:
        txt += "abundent\n"
    print(txt)


def ipt():
    try:
        v = int(input("Bitte geben Sie eine Zahl ein: "))
    except ValueError:
        print('argument must be an integer')
        exit(-1)
    else:
        return v


if __name__ == '__main__':
    while True:
        n = ipt()
        def_vol_abu(n)

vote_ok
von Klaus (1960 Punkte) - 11.12.2020 um 17:58 Uhr
Quellcode ausblenden Python-Code
import random as rnd

def divider_total(number):
    divider = []
    for index in range (1, number):
        if number%index == 0:
            divider.append(index)
    result = sum(divider)
    if result == number: 
        kind = 'vollkommen'
    elif result > number:
        kind = 'abundant'
    else:
        kind = 'defizient'

    output_divider = []
    for element in divider:
        output_divider.append(str(element))
    
    print(f'Zahl {number:4.0f}: {" + ".join(output_divider):60} = {result:4.0f} --> {kind}')

divider_total(80)
divider_total(28)
for index in range(10):
    divider_total(rnd.randint(2, 1000))
vote_ok
von satn1241 (3090 Punkte) - 11.01.2021 um 19:00 Uhr
Quellcode ausblenden Python-Code
teiler = []
zahl= 50
for i in range(1,zahl):
    if zahl % i == 0:
        teiler.append(i)

print(teiler)

if sum(teiler) < zahl:
    print('die Zahl ' + str(zahl) + " ist defizient --> "+ str(sum(teiler)))
if sum(teiler) > zahl:
    print("die Zahl " + str(zahl) + " ist abundant --> "+str(sum(teiler)))
if sum(teiler) == zahl:
    print("die Zahl " + str(zahl) + " ist vollkommen --> "+str(sum(teiler)))
2003959

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.