Python :: Aufgabe #47

6 Lösungen Lösungen öffentlich

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.

Lösungen:

vote_ok
von Sticitov (170 Punkte) - 01.03.2015 um 21:54 Uhr
Quellcode ausblenden Python-Code
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')
vote_ok
von _Mala_Fide_ (820 Punkte) - 26.04.2015 um 22:35 Uhr
Quellcode ausblenden Python-Code
#!/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."
vote_ok
von jigga (4260 Punkte) - 21.06.2015 um 20:10 Uhr
Quellcode ausblenden Python-Code
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.")
vote_ok
von Nachbar (2820 Punkte) - 06.10.2016 um 19:05 Uhr
Quellcode ausblenden Python-Code
# -*- 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"
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)
vote_ok
von tebarius (470 Punkte) - 31.08.2018 um 17:27 Uhr
Quellcode ausblenden Python-Code
#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")