0116 - Medie Prime: Difference between revisions

From Bitnami MediaWiki
Line 4: Line 4:
Programul citește de la tastatură numărul '''numar''', iar apoi '''n''' numere naturale..
Programul citește de la tastatură numărul '''numar''', iar apoi '''n''' numere naturale..
== Date de ieşire ==
== Date de ieşire ==
Programul afișează pe ecran numărul M, reprezentând media aritmetică a valorilor prime.
Programul afișează pe ecran numărul '''M''', reprezentând media aritmetică a valorilor prime.
 
== Restricții și precizări ==
== Restricții și precizări ==
* numar ∈ Ν
* numar ∈ Ν

Revision as of 07:54, 6 April 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>