0988 - Prime: Difference between revisions
Tita Marian (talk | contribs) Pagină nouă: == Cerinţa == Se dă un tablou cu '''n''' elemente, numere naturale. Să se afișeze numerele prime din șir, în ordinea în care apar în șir. Se va defini și apela subprogramul '''prim''', care verifică dacă un număr natural transmis ca parametru este prim. ==Date de intrare == Fișierul de intrare '''in.txt''' conține pe prima linie numărul '''n''', iar iar pe a doua linie cele n elemente ale tabloului. == Date de ieșire == Fișierul de intrare '''out.txt''' va... |
|||
Line 13: | Line 13: | ||
== Exemplu 1 == | == Exemplu 1 == | ||
; in.txt | ; in.txt | ||
5 | |||
12 2 123 41 77 | |||
; out.txt | ; out.txt | ||
2 41 | |||
==Exemplu 2== | ==Exemplu 2== | ||
;in.txt | ;in.txt |
Revision as of 22:43, 14 November 2023
Cerinţa
Se dă un tablou cu n elemente, numere naturale. Să se afișeze numerele prime din șir, în ordinea în care apar în șir. Se va defini și apela subprogramul prim, care verifică dacă un număr natural transmis ca parametru este prim.
Date de intrare
Fișierul de intrare in.txt conține pe prima linie numărul n, iar iar pe a doua linie cele n elemente ale tabloului.
Date de ieșire
Fișierul de intrare out.txt va conține pe prima linie elementele cerute, separate prin exact un spațiu.
Restricţii şi precizări
- 1 ≤ n ⩽ 1000
elementele tabloului vor fi mai mici decât 1.000.000.000
Exemplu 1
- in.txt
5 12 2 123 41 77
- out.txt
2 41
Exemplu 2
- in.txt
- 4
- 12 4 2 43
- out.txt
- 2 43
Rezolvare
<syntaxhighlight lang="python" line> def prim(numar):
if numar <= 1: return False for i in range(2, int(numar**0.5) + 1): if numar % i == 0: return False return True
if __name__ == "__main__":
# Citim numarul de numere din fisierul de intrare with open("in.txt", "r") as infile: n = int(infile.readline().strip())
# Verificăm dacă numărul de numere este în intervalul 1-1000 if 1 <= n <= 1000: # Citim și procesăm restul datelor tablou = list(map(int, infile.readline().strip().split()))
# Găsim și filtrăm numerele prime numere_prime = [numar for numar in tablou if 1 <= numar < 1000000000 and prim(numar)]
# Scriem numerele prime în fisierul de ieșire with open("out.txt", "w") as outfile: outfile.write(" ".join(map(str, numere_prime))) else: print("Numarul de numere trebuie sa fie intre 1 si 1000.")
</syntaxhighlight>
Explicație
Dacă numărul de numere este valid, programul continuă să citească și să proceseze restul datelor din fișierul de intrare. Numerele sunt citite și stocate într-o listă numită tablou.
Apoi, funcția prim(numar) este folosită pentru a determina dacă un număr este prim sau nu. Funcția prim verifică dacă numărul este mai mare decât 1 și dacă are divizori între 2 și radicalul său pătrat. Dacă nu are divizori, este considerat prim.
Numerele prime sunt filtrate din lista tablou și stocate într-o listă separată numită numere_prime. Aceste numere sunt apoi scrise în fișierul de ieșire out.txt în ordinea în care apar în lista tablou.
Această structură a codului asigură că numărul de numere este valid înainte de a încerca să proceseze datele, asigurând astfel respectarea restricțiilor impuse.