1408 - Numere 10
De la Universitas MediaWiki
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
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.")