3502 - Hard Prime: Difference between revisions
Pagină nouă: == Cerința == Se dau n numere naturale. Să se afișeze toate numerele prime distincte dintre acestea in ordine crescătoare. == Date de intrare == 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 == 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... |
|||
Line 26: | Line 26: | ||
<syntaxhighlight lang="python" line> | <syntaxhighlight lang="python" line> | ||
#3502 - HardPrime | #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: | |||
print("Fisierul de intrare nu exista!") | |||
exit() | |||
# Verificare daca sunt respectate cerintele | |||
if not check_restrictions(n, numbers): | |||
print("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> | </syntaxhighlight> |
Revision as of 13:58, 12 December 2023
Cerința
Se dau n numere naturale. Să se afișeze toate numerele prime distincte dintre acestea in ordine crescătoare.
Date de intrare
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
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
- 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
- hardprimein.txt
- 10
- 3 2 32 47 3 0 2 40 7 1
- hardprimeout.txt
- 2 3 7 47
- Explicație
- 2, 3, 7 și 47 sunt singurele numere prime din fișierul de intrare.
Exemplu 2
- hardprimein.txt
- 0
- hardprimeout.txt
- Nu au fost respectate cerintele impuse
Rezolvare
<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:
print("Fisierul de intrare nu exista!") exit()
- Verificare daca sunt respectate cerintele
if not check_restrictions(n, numbers):
print("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>