Python :: Aufgabe #287
3 Lösungen
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ß
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:
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)
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))
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)))