0116 - Medie Prime: Diferență între versiuni

De la Universitas MediaWiki
Linia 11: Linia 11:
* cele n numere citite vor fi mai mici decât 10000
* cele n numere citite vor fi mai mici decât 10000
*rezultatul se va afişa cu cel puțin două zecimale exacte
*rezultatul se va afişa cu cel puțin două zecimale exacte
*printre cele n numere va exista cel puțin un număr prim.
*printre cele n numere va exista cel puțin un număr prim


== Exemplu ==
== Exemplu ==

Versiunea de la data 6 aprilie 2023 08:21

Cerinţa

Să se scrie un program care citeşte de la tastatură un număr natural numar şi apoi un şir de n numere naturale şi determină media aritmetică a celor prime.

Date de intrare

Programul citește de la tastatură numărul numar, iar apoi n numere naturale..

Date de ieşire

Programul afișează pe ecran numărul M, reprezentând media aritmetică a valorilor prime.

Restricții și precizări

  • numar ∈ Ν
  • 0 ⩽ n ⩽ 1.000
  • cele n numere citite vor fi mai mici decât 10000
  • rezultatul se va afişa cu cel puțin două zecimale exacte
  • printre cele n numere va exista cel puțin un număr prim

Exemplu

Intrare
5
8 7 5 9 11
Ieșire
Datele introduse corespund restricțiilor impuse.
7.666666666666667

Rezolvare

def validare_date_numar(numar):
    if numar.isdigit():
        if 0 <= int(numar) <= 1000:
            return True
    return False

def validare_date_numere(n):
    if n.isdigit():
        if 0 <= int(n) <= 10000:
            return True
    return False

def is_prime(numar):
    if numar < 2:
        return False
    for i in range(2, int(numar ** 0.5) + 1):
        if numar % i == 0:
            return False
    return True

def avg_prime(numere):
    prime_numere = [numar for numar in numere if is_prime(numar)]
    if len(prime_numere) > 0:
        return sum(prime_numere) / len(prime_numere)
    else:
        return None

if __name__ == "__main__":
    n = input("Introduceti numarul de elemente: ")
    if validare_date_numere(n):
        print("Datele de intrare corespund restricțiilor impuse.")
        numere = list(map(int, input("Introduceti numerele: ").split()))
        if validare_date_numere(str(len(numere))):
            print("Datele de intrare corespund restricțiilor impuse.")
            result = avg_prime(numere)
            if result is not None:
                print("Media aritmetica a numerelor prime din lista este:", result)
            else:
                print("Nu exista numere prime in lista!")
        else:
            print("Numarul de numere introdus nu corespunde cu numarul specificat anterior.")
    else:
        print("Numarul de elemente introdus nu corespunde cu restrictiile impuse.")