0436 - Prim Maxim: Difference between revisions

From Bitnami MediaWiki
Pagină nouă: == Cerinţa == Să se scrie un program care citeşte de la tastatură un număr natural '''nr''' şi apoi un şir de '''nr''' '''numere''' naturale şi determină cel mai mare număr prim din șir și de câte ori apare. == Date de intrare == Programul citește de la tastatură numărul '''nr''', iar apoi '''nr''' '''numere''' naturale. == Date de ieşire == Programul afișează pe ecran numerele '''max_prim''' '''numar_aparitie''', separate printr-un spațiu, reprezentând c...
 
No edit summary
 
Line 72: Line 72:


</syntaxhighlight>
</syntaxhighlight>
== Explicație ==
Programul primește de la tastatură un număr și o listă de numere întregi și verifică dacă acestea respectă anumite restricții. Dacă da, atunci calculează cel mai mare număr prim din listă și afișează acest număr și numărul de apariții ale acestuia în listă.
Funcția '''verif_prim''' primește un număr și returnează '''True''' dacă este prim și '''False''' în caz contrar.
Funcția '''numarare''' numără numărul de apariții ale unui număr dat într-o listă dată.
Funcția '''max_prim''' găsește cel mai mare număr prim din listă și numărul de apariții ale acestuia, folosind funcțiile '''verif_prim''' și '''numarare'''.

Latest revision as of 16:41, 28 April 2023

Cerinţa[edit]

Să se scrie un program care citeşte de la tastatură un număr natural nr şi apoi un şir de nr numere naturale şi determină cel mai mare număr prim din șir și de câte ori apare.

Date de intrare[edit]

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

Date de ieşire[edit]

Programul afișează pe ecran numerele max_prim numar_aparitie, separate printr-un spațiu, reprezentând cel mai mare număr prim din șir și de câte ori apare acest număr în șir.

Restricții și precizări[edit]

  • nr ∈ Ν
  • 0 < nr < 1.000
  • cele nr numere citite vor fi mai mici decât 2.000.000.000
  • pentru toate testele de evaluare, datele de intrare vor conține cel puțin un număr prim

Exemplu1[edit]

Intrare
5
8 7 11 9 11
Ieșire
Datele de intrare corespund restricțiilor impuse.
11 2

Exemplu2[edit]

Intrare
6
3 17 17 8 15 17
Ieșire
Datele de intrare corespund restricțiilor impuse.
17 3

Rezolvare[edit]

<syntaxhighlight lang="python" line> def validare_date(nr, numere):

   flag = False
   if 0 < int(nr) < 1_000:
       flag = all(isinstance(x, int) and 1 <= x <= 2_000_000_000 for x in numere)
   return flag


def verif_prim(n):

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


def numarare(numere, prim):

   numar_aparitie = 0
   for numar in numere:
       if numar == prim:
           numar_aparitie += 1
   return numar_aparitie


def max_prim(numere):

   max_prim = None
   for numar in numere:
       if verif_prim(numar):
           if max_prim is None or numar > max_prim:
               max_prim = numar
   numar_aparitie = numarare(numere, max_prim)
   print(max_prim, numar_aparitie)


if __name__ == '__main__':

   nr = int(input())
   numere = list(map(int, input().split()))
   if validare_date(nr, numere):
       print("\nDatele de intrare corespund restrictiilor impuse.\n")
       max_prim(numere)
   else:
       print("Datele de intrare nu corespund restrictiilor impuse.")

</syntaxhighlight>

Explicație[edit]

Programul primește de la tastatură un număr și o listă de numere întregi și verifică dacă acestea respectă anumite restricții. Dacă da, atunci calculează cel mai mare număr prim din listă și afișează acest număr și numărul de apariții ale acestuia în listă.

Funcția verif_prim primește un număr și returnează True dacă este prim și False în caz contrar.

Funcția numarare numără numărul de apariții ale unui număr dat într-o listă dată.

Funcția max_prim găsește cel mai mare număr prim din listă și numărul de apariții ale acestuia, folosind funcțiile verif_prim și numarare.