0116 - Medie Prime: Difference between revisions
Paul Matei (talk | contribs) Pagină nouă: == 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 &... |
Paul Matei (talk | contribs) |
||
Line 21: | Line 21: | ||
<syntaxhighlight lang="python" line> | <syntaxhighlight lang="python" line> | ||
def validare_date_numar(numar): | def validare_date_numar(numar): | ||
if numar.isdigit(): | if numar.isdigit(): | ||
if 0 <= int(numar) <= 1000: | if 0 <= int(numar) <= 1000: | ||
return True | |||
return | return False | ||
def validare_date_numere(n): | def validare_date_numere(n): | ||
if n.isdigit(): | |||
if 0 <= int(n) <= 10000: | |||
return True | |||
return | return False | ||
def is_prime(numar): | def is_prime(numar): | ||
Line 50: | Line 48: | ||
if __name__ == "__main__": | if __name__ == "__main__": | ||
n = | 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: | else: | ||
print(" | print("Numarul de elemente introdus nu corespunde cu restrictiile impuse.") | ||
</syntaxhighlight> | </syntaxhighlight> |
Revision as of 20:20, 19 March 2023
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;
- în toate testele, 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>