3351 - Prime 3

From Bitnami MediaWiki

Cerinţa[edit | edit source]

Se dau nr numere naturale. Determinați suma celor prime.

Date de intrare[edit | edit source]

Programul citește de la tastatură numărul nr, iar apoi nr numere naturale.

Date de ieşire[edit | edit source]

Programul va afișa pe ecran numărul suma, reprezentând suma celor prime.

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

  • nr ∈ Ν
  • 1 ⩽ nr ⩽ 1.000
  • cele nr numere citite vor fi mai mici decât 1.000.000.000

Exemplu1[edit | edit source]

Intrare
5
11 25 3 4 1
Ieșire
Datele de intrare corespund restricțiilor impuse.
14

Explicație[edit | edit source]

Dintre cele 5 numere citite sunt prime numerele 11 și 3.

Exemplu2[edit | edit source]

Intrare
4
3 23 8 7
Ieșire
Datele de intrare corespund restricțiilor impuse.
33

Explicație[edit | edit source]

Dintre cele 4 numere citite sunt prime numerele 3, 23 și 7.

Rezolvare[edit | edit source]

<syntaxhighlight lang="python" line> def validare_date(nr, numere):

   flag = False
   if 0 < int(nr) <= 1000:
       flag = all(isinstance(x, int) and 1 <= x <= 1_000_000_000 for x in numere)
   return flag


def verif_prim(n):

   if n <= 1:
       return False
   else:
       for i in range(2, int(n ** 0.5) + 1):
           if n % i == 0:
               return False
       else:
           return True


def suma_celor_prime(numere):

   suma = 0
   for numar in numere:
       if verif_prim(numar):
           suma += numar
   print(suma)


if __name__ == '__main__':

   nr = int(input())
   numere = list(map(int, input().split()))
   if validare_date(nr, numere):
       print("\nDatele de intrare corespund restrictiilor impuse.\n")
       suma_celor_prime(numere)
   else:
       print("Datele de intrare nu corespund restrictiilor impuse.")

</syntaxhighlight>

Explicație[edit | edit source]

Programul primește de la utilizator un număr de elemente urmat de o listă de numere și calculează suma tuturor numerelor prime din listă.

Funcția verif_prim primește un număr și returnează True dacă numărul este prim și False în caz contrar. Algoritmul folosit verifică dacă numărul este divizibil cu un număr între 2 și radicalul pătrat al numărului, iar în caz afirmativ, consideră numărul ca neprim și se oprește din căutare.

Funcția suma_celor_prime primește lista de numere și calculează suma tuturor numerelor prime din listă. Se parcurge fiecare element al listei, iar dacă acesta este prim, se adaugă la suma totală. Rezultatul final este afișat.

Dacă datele de intrare sunt valide, programul afișează un mesaj corespunzător și calculează suma numerelor prime din listă. În caz contrar, se afișează un mesaj de eroare.