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")
2106489

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.