0116 - Medie Prime
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.66
Rezolvare
<syntaxhighlight lang="python" line> 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.")
</syntaxhighlight>