0163 - Să se șteargă dintr-un vector toate elementele care sunt numere prime.
De la Universitas MediaWiki
Sursa: Stergere
Cerinţă
Se dă un vector cu n
elemente numere naturale. Să se șteargă din vector toate elementele care sunt numere prime.
Date de intrare
Programul citește de la tastatură numărul n
, iar apoi n
numere naturale, separate prin spaţii, reprezentând elementele vectorul.
Date de ieșire
Programul afișează pe ecran, separate prin spații, elementele vectorului obținut prin ștergerea elementelor prime.
Restricţii şi precizări
- 0 < n <= 1000
- valorile elementelor șirului vor fi mai mici decât
2^30
Exemple
Exemplul 1
- Intrare
- 7
- 2 21 2 3 1 3 3
- Ieșire
- Vectorul filtrat este: 21 1
Exemplul 2
- Intrare
- 123
- AKDD A
- Ieșire
- Trebuie introduse doar numere intregi.
Exemplul 3
- Intrare
- 3
- -1 3 41
- Ieșire
- Elementele trebuie sa fie intre 0 si 2^30 - 1.
Rezolvare
def citeste_n():
while True:
try:
n = int(input("Introduceti numarul de elemente al vectorului: "))
if n <= 0 or n > 1000:
print("Numarul trebuie sa fie intre 1 si 1000.")
else:
return n
except ValueError:
print("Trebuie introduse doar numere intregi.")
def citeste_vector(n):
vector = []
while len(vector) < n:
elemente = input("Introduceti elementele vectorului, separate prin spatiu: ").split()
for elem in elemente:
try:
nr = int(elem)
if not 0 <= nr < 2 ** 30:
print("Elementele trebuie sa fie intre 0 si 2^30 - 1.")
break
vector.append(nr)
except ValueError:
print("Trebuie introduse doar numere intregi.")
break
return vector
def este_prim(nr):
if nr < 2:
return False
for i in range(2, int(nr ** 0.5) + 1):
if nr % i == 0:
return False
return True
def sterge_prime(vector):
return [nr for nr in vector if not este_prim(nr)]
if __name__ == '__main__':
n = citeste_n()
vector = citeste_vector(n)
vector_filtrat = sterge_prime(vector)
print("Vectorul filtrat este:", *vector_filtrat)