1408 - Numere 10: Difference between revisions
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... |
Robert Manc (talk | contribs) No edit summary |
||
Line 75: | Line 75: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
== Explicație == | |||
Acest program primește ca date de intrare un număr întreg '''nr''' urmat de o listă de '''nr''' numere întregi '''numere'''. Programul validează datele de intrare și afișează numărul total de numere prime din listă și cel mai mic și cel mai mare număr prim din listă. | |||
Funcția '''verif_prim''' verifică dacă un număr '''n''' este prim sau nu. Funcția '''numarare_prim''' numără numerele prime din lista de numere primite ca parametru, iar funcția '''gaseste_min_max_prim''' găsește cel mai mic și cel mai mare număr prim din listă. | |||
În funcția '''gaseste_min_max_prim''', numărul total de numere prime este calculat utilizând funcția '''numarare_prim'''. Prin iterarea prin lista de numere, se găsesc cele mai mici și cele mai mari numere prime din listă. Acestea sunt stocate în variabilele '''min_prim''' și '''max_prim''', respectiv. Dacă niciun număr prim nu este găsit, '''min_prim''' și '''max_prim''' rămân '''None'''. La final, cele trei valori (numărul total de numere prime și cele mai mici și cele mai mari numere prime) sunt afișate. |
Latest revision as of 16:39, 28 April 2023
Cerinţa[edit | edit source]
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[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 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[edit | edit source]
- 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[edit | edit source]
- Intrare
- 9
- 7 3 10 17 14 1 9 3 13
- Ieșire
- Datele de intrare corespund restricțiilor impuse.
- 5 3 17
Exemplu2[edit | edit source]
- 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[edit | edit source]
<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>
Explicație[edit | edit source]
Acest program primește ca date de intrare un număr întreg nr urmat de o listă de nr numere întregi numere. Programul validează datele de intrare și afișează numărul total de numere prime din listă și cel mai mic și cel mai mare număr prim din listă.
Funcția verif_prim verifică dacă un număr n este prim sau nu. Funcția numarare_prim numără numerele prime din lista de numere primite ca parametru, iar funcția gaseste_min_max_prim găsește cel mai mic și cel mai mare număr prim din listă.
În funcția gaseste_min_max_prim, numărul total de numere prime este calculat utilizând funcția numarare_prim. Prin iterarea prin lista de numere, se găsesc cele mai mici și cele mai mari numere prime din listă. Acestea sunt stocate în variabilele min_prim și max_prim, respectiv. Dacă niciun număr prim nu este găsit, min_prim și max_prim rămân None. La final, cele trei valori (numărul total de numere prime și cele mai mici și cele mai mari numere prime) sunt afișate.