ich hab ein kleines Programm geschrieben, das mir ermittelt, ob eine Zahl vollkommen (also die Summe aller echten Teiler = Zahl, zB 6 = 1*2*3 = 1+2+3)
Es funktioniert auch. Nur leider seeeehr langsam.. ich wollte mir die ersten 4 vollkommenen Zahlen ausgeben lassen, aber das dauert schon ewig.
Hat jemand einen Perfomance-Tipp für mich?
Liebe Grüße!
Code: Alles auswählen
import math
def is_perfect_number(n):
k = 1 #teiler
sum = 0 #teilersumme
while k <= n//2: #ich muss ja nur bis zur hälfte gehen
if n%k == 0:
sum += k
k += 1
if sum == n:
return True
else:
return False
Code: Alles auswählen
def perfect_numbers(n):
x = []
z = 1
while n > 0:
if (is_perfect_number(z)):
x.append(z)
n -= 1
z += 1
return x