Prosze o szybką pomoc!! 20 punktów!!
Sprawdzić czy dana liczba jest liczbą doskonałą (tzn. suma wszystkich mniejszych
od niej podzielników jest równa tej liczbie – np. 6, 28) napisać program w pythonie



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)

Zobacz obrazek Konrad509