1408 - Numere 10

From Bitnami MediaWiki
Revision as of 15:24, 11 April 2023 by Robert Manc (talk | contribs) (Pagină nouă: == Cerinţa == Se dau '''nr''' numere naturale. Calculați câte dintre ele sunt prime, cel mai mare și cel mai mic număr prim. == Date de intrare == Programul citește de la tastatură numărul '''nr''', iar apoi '''nr''' '''numere''' naturale. == Date de ieşire == Programul va afișa pe ecran numărul '''numere_prime''', '''min_prim''', '''max_prim''', reprezentând câte dintre numerele date sunt prime, cel mai mic și cel mai pare număr prim. == Restricții și preciz...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Cerinţa

Se dau nr numere naturale. Calculați câte dintre ele sunt prime, cel mai mare și cel mai mic număr prim.

Date de intrare

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

Date de ieşire

Programul va afișa pe ecran numărul numere_prime, min_prim, max_prim, reprezentând câte dintre numerele date sunt prime, cel mai mic și cel mai pare număr prim.

Restricții și precizări

  • nr ∈ Ν
  • 1 ⩽ nr ⩽ 10.000
  • cele nr numere citite vor fi mai mici decât 1.000.000.000
  • în fiecare test va exista cel puțin un număr prim

Exemplu1

Intrare
9
7 3 10 17 14 1 9 3 13
Ieșire
Datele de intrare corespund restricțiilor impuse.
5 3 17

Exemplu2

Intrare
10
77 64 39 81 6 15 3 79 94 32
Ieșire
Datele de intrare corespund restricțiilor impuse.
2 3 79

Rezolvare

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

   flag = False
   if 0 < int(nr) <= 10_000:
       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 numarare_prim(numere):

   numere_prime = 0
   for numar in numere:
       if verif_prim(numar):
           numere_prime += 1
   return numere_prime


def gaseste_min_max_prim(numere):

   numere_prime = numarare_prim(numere)
   min_prim = None
   max_prim = None
   for numar in numere:
       if verif_prim(numar):
           if min_prim is None or numar < min_prim:
               min_prim = numar
           if max_prim is None or numar > max_prim:
               max_prim = numar
   print(numere_prime, min_prim, max_prim)


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")
       gaseste_min_max_prim(numere)
   else:
       print("Datele de intrare nu corespund restrictiilor impuse.")

</syntaxhighlight>