1960 - Perfecte

From Bitnami MediaWiki
Revision as of 18:19, 5 May 2023 by Adina Timiș (talk | contribs) (Pagină nouă: ==Cerința== Un număr natural nenul se numește perfect dacă este egal cu suma divizorilor săi naturali strict mai mici decât el. Exemplu: 28 este număr perfect pentru că 28 = 1 + 2 + 4 + 7 + 14. Se dă un șir de n numere naturale. Pentru fiecare element din șir se va afișa valoarea 1 dacă acesta este perfect sau 0 în caz contrar. ==Date de intrare== Programul citește de la tastatură numărul n și apoi n numere naturale. ==Date de ieșire== Programul va afi...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Cerința[edit | edit source]

Un număr natural nenul se numește perfect dacă este egal cu suma divizorilor săi naturali strict mai mici decât el.

Exemplu: 28 este număr perfect pentru că 28 = 1 + 2 + 4 + 7 + 14. Se dă un șir de n numere naturale. Pentru fiecare element din șir se va afișa valoarea 1 dacă acesta este perfect sau 0 în caz contrar.

Date de intrare[edit | edit source]

Programul citește de la tastatură numărul n și apoi n numere naturale.

Date de ieșire[edit | edit source]

Programul va afișa pe ecran șirul de valori 1 și 0 separate prin câte un spațiu, conform cerinței.

Restricții și precizări[edit | edit source]

  • 0 < n < 1000;
  • numerele citite vor fi mai mici decât ;

Exemplul 1[edit | edit source]

Intrare
5
28 7 8 9 6
Ieșire
Datele de intrare corespund restricțiilor impuse.
1 0 0 0 1

Explicație[edit | edit source]

28 și 6 sunt numere perfecte.

Exemplul 2[edit | edit source]

Intrare
0
0
Ieșire
Datele de intrare nu corespund restricțiilor impuse.

Rezolvare[edit | edit source]

<syntaxhighlight lang="python" line="">

  1. 1960 - Perfecte
  2. definim funcția care primește ca argument un număr natural și verifică dacă acesta este perfect

def is_perfect(num):

   divisors_sum = 0
   for i in range(1, num):
       if num % i == 0:
           divisors_sum += i
   return divisors_sum == num


if __name__ == "__main__":

   # citim de la tastatură numărul de elemente și vectorul de numere
   n = int(input("Introduceți numărul de elemente: "))
   vector = list(map(int, input("Introduceți elementele vectorului: ").split()))
   # verificarea restricțiilor
   if 0 < n < 1000 and all(0 <= i < 10**19 for i in vector):
       print("Datele de intrare corespund restricțiilor impuse.")
       # pentru fiecare număr din vector, verificăm dacă este perfect și afișăm rezultatul
       for num in vector:
           if is_perfect(num):
               print("1", end=" ")
           else:
               print("0", end=" ")
       print()
   else:
       print("Datele de intrare nu corespund restricțiilor impuse.")


</syntaxhighlight>