Python :: Aufgabe #47
6 Lösungen

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.
Lösungen:

z = int(input('Zahl? ')) l = [] i = 1 j = 0 summe = 0 while i < z: if z % i != 0: i += 1 else: l.append(i) i += 1 for j in l: summe += j if summe == z: print(z , ' ist eine vollkommene Zahl') else: print(z , ' ist keine vollkommene Zahl')

#!/usr/bin/python import string eingabe = input("Gib eine Zahl ein:\t") vollkommen = 0 teiler_liste = [] for teiler in range(1, eingabe): if eingabe % teiler == 0: vollkommen += teiler teiler_liste += [str(teiler)] if vollkommen == eingabe: print eingabe, "ist eine vollkommene Zahl.\nDie Teiler dazu sind:\t", string.join(teiler_liste, ", ") else: print eingabe, "erfuellt die Bedingung nicht."

import sys liste = [] ergebnis = 0 zahl = int(input("Zahl zwischen 1 und 100000: ")) if zahl < 1 or zahl > 100000: print("Flasche Eingabe!") sys.exit(0) for i in range(1,int(zahl/2) + 1): if zahl % i == 0: liste.append(i) for i in range(len(liste)): ergebnis += liste[i] if ergebnis == zahl: print(zahl, "=", liste) else: print(zahl, "erfuellt die Bedingung nicht.")

# -*- coding: utf-8 -*- while True: eingabe = input("Bitte eine Zahl eingeben: ") liste = [] z = 0 for i in range (1, eingabe): if eingabe % i == 0: liste.append(i) for j in liste: z = z + j if z == eingabe: print "\n" + str(eingabe) + " ist eine vollkommene Zahl. Die echten Teiler sind: " + str(liste) + "\n" True = False else: print "\n" + str(eingabe) + " ist keine vollkommene Zahl.\n"

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)

#Python3.7 # -*- coding: iso-8859-15 -*- n=int(input("zu prüfenden Zahl N (mit 0 < N < 100000):")) teilerliste=[] if n<1 or n>99999: print("N nicht im vorgegebenen Bereich") else: for i in range(1,n): if n%i==0: teilerliste.append(i) if sum(teilerliste)==n: ausgabeliste="" for j in teilerliste: ausgabeliste=ausgabeliste+str(j)+" " print(n,"ist eine vollkommene Zahl, die Teiler sind:",ausgabeliste) else: print(n,"ist keine vollkommene Zahl")