0116 - Medie Prime
De la Universitas MediaWiki
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
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.")