0163 - Să se șteargă dintr-un vector toate elementele care sunt numere prime.

De la Universitas MediaWiki
Versiunea din 19 martie 2023 06:53, autor: Miriam (discuție | contribuții) (cuprins)

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)