Odpowiedź :
# sprawdzenie, czy dana liczba jest liczbą doskonałą
def czy_liczba_doskonala(liczba):
# suma podzielników
suma_podzielnikow = 0
# dla każdego mniejszego od liczby podzielnika
for podzielnik in range(1, liczba):
# jeśli liczba jest podzielna przez podzielnik
if liczba % podzielnik == 0:
# dodaj podzielnik do sumy podzielników
suma_podzielnikow += podzielnik
# jeśli suma podzielników jest równa liczbie, to liczba jest doskonała
return suma_podzielnikow == liczba
# sprawdzenie dla liczby 6
print(czy_liczba_doskonala(6)) # True
# sprawdzenie dla liczby 28
print(czy_liczba_doskonala(28)) # True
# sprawdzenie dla liczby 496
print(czy_liczba_doskonala(496)) # True
# sprawdzenie dla liczby 8128
print(czy_liczba_doskonala(8128)) # True
# sprawdzenie dla liczby 8129
print(czy_liczba_doskonala(8129)) # False
Przykładowa implementacja z przykładowymi wywołaniami poniżej:
def znajdzDzielniki(liczba):
dzielniki = []
for i in range(1, liczba):
if liczba % i == 0:
dzielniki.append(i)
return dzielniki
def czyDoskonala(liczba):
if liczba == sum(znajdzDzielniki(liczba)):
print(f'Liczba {liczba} jest doskonała.')
else:
print(f'Liczba {liczba} nie jest doskonała.')
czyDoskonala(6)
czyDoskonala(14)
czyDoskonala(28)
czyDoskonala(91)
czyDoskonala(496)