3502 - Hard Prime
Cerința[edit | edit source]
Se dau n numere naturale. Să se afișeze toate numerele prime distincte dintre acestea in ordine crescătoare.
Date de intrare[edit | edit source]
Fișierul de intrare hardprimein.txt conține pe prima linie numărul n, iar pe a doua linie n numere naturale separate prin spații.
Date de ieșire[edit | edit source]
Fișierul de ieșire hardprimeout.txt va conține pe prima linie toate numerele prime distincte citite, în ordine crescătoare, separate prin câte un spațiu.
Restricții și precizări[edit | edit source]
- 1 ⩽ n ⩽ 30.000
- numerele de pe a doua linie a fișierului de intrare vor fi mai mici decât 2.000.000.000
Exemplu 1[edit | edit source]
- hardprimein.txt
- 10
- 3 2 32 47 3 0 2 40 7 1
- hardprimeout.txt
- 2 3 7 47
Explicație[edit | edit source]
2, 3, 7 și 47 sunt singurele numere prime din fișierul de intrare.
Exemplu 2[edit | edit source]
- hardprimein.txt
- 0
- hardprimeout.txt
- Nu au fost respectate cerintele impuse
Rezolvare[edit | edit source]
<syntaxhighlight lang="python" line>
- 3502 - HardPrime
def check_restrictions(n, numbers):
if not (1 <= n <= 30000): return False
if not all(0 <= num < 2000000000 for num in numbers): return False
return True
def is_prime(num):
if num < 2: return False for i in range(2, int(num**0.5) + 1): if num % i == 0: return False return True
- Citire date de intrare
try:
with open("hardprimein.txt", "r") as file: n = int(file.readline().strip()) numbers = list(map(int, file.readline().split()))
except FileNotFoundError:
with open("hardprimeout.txt", "w") as file_out: file_out.write("Nu au fost respectate cerintele impuse!") exit()
- Verificare daca sunt respectate cerintele
if not check_restrictions(n, numbers):
with open("hardprimeout.txt", "w") as file_out: file_out.write("Nu au fost respectate cerintele impuse!") exit()
- Identificare și afișare numere prime distincte în ordine crescătoare
prime_numbers = sorted(set(num for num in numbers if is_prime(num)))
- Scriere rezultat în fișierul de ieșire
with open("hardprimeout.txt", "w") as file:
file.write(" ".join(map(str, prime_numbers)) + "\n")
</syntaxhighlight>