0407 - Oglindit Prim: Difference between revisions

From Bitnami MediaWiki
No edit summary
No edit summary
 
Line 31: Line 31:




def validate_input(n):
def validare_date(n):
     if n <= 0:
     if n <= 0:
         return False
         return False
Line 39: Line 39:
if __name__ == '__main__':
if __name__ == '__main__':
     n = int(input("Introduceti numarul de valori: "))
     n = int(input("Introduceti numarul de valori: "))
     if validate_input(n):
     if validare_date(n):
         s = 0
         s = 0
         for i in range(n):
         for i in range(n):
             x = int(input(f"Introduceti valoarea {i+1}: "))
             x = int(input(f"Introduceti valoarea {i+1}: "))
             if validate_input(x):
             if validare_date(x):
                 ogl = 0
                 ogl = 0
                 aux = x
                 aux = x
Line 59: Line 59:
     else:
     else:
         print("Datele de intrare nu corespund restricțiilor impuse.")
         print("Datele de intrare nu corespund restricțiilor impuse.")




Line 65: Line 66:
</syntaxhighlight>
</syntaxhighlight>
==Explicație rezolvare==
==Explicație rezolvare==
Acest cod în Python verifică dacă oglinda unui număr este un număr prim, pentru fiecare dintre cele n numere introduse de la tastatură și calculează suma numerelor pentru care acest lucru este adevărat.
Acest program primește un număr '''n''' de valori de la tastatură și calculează suma tuturor numerelor care au oglinda primă.
 
Funcția prim verifică dacă un număr dat este prim, utilizând verificarea prin împărțire cu rest la toate numerele impare mai mici sau egale cu rădăcina pătrată a numărului.


Funcția validate_input verifică dacă un număr dat este un întreg pozitiv, și returnează True dacă este, altfel False.
Oglinda unui număr este reprezentată de cifrele numărului în ordine inversă. De exemplu, oglinda numărului 1234 este 4321.


În blocul if __name__ == '__main__', se citesc valorile de la tastatură, se verifică dacă sunt valide și se calculează suma numerelor care satisfac condiția dată.
Pentru a determina dacă un număr este prim, se verifică dacă acesta este divizibil cu numerele între 2 și rădăcina pătrată a numărului (exclusiv). Dacă numărul este divizibil cu oricare dintre aceste numere, nu este prim.


Dacă unul dintre numerele citite de la tastatură nu este un întreg pozitiv, se afișează un mesaj de eroare și se oprește procesarea datelor.
Funcția '''validare_date''' verifică dacă un număr este pozitiv.


La sfârșit, se afișează suma numerelor care au oglinda un număr prim.
Programul afișează mesaje de eroare în cazul în care datele introduse nu corespund restricțiilor impuse și afișează suma numerelor care au oglinda primă în caz contrar.

Latest revision as of 19:44, 9 April 2023

Cerinţa[edit | edit source]

Se dă un șir cu n numere naturale. Determinați suma celor care au oglinditul număr prim.

Date de intrare[edit | edit source]

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

Date de ieşire[edit | edit source]

Programul afișează pe ecran numărul S, reprezentând rezultatul cerut.

Restricții și precizări[edit | edit source]

  • 1 ≤ n ≤ 1000
  • cele n numere citite vor fi mai mici decât 1.000.000.000

Exemplu[edit | edit source]

Intrare
6

133 35 41 31 90 7

Ieșire
206

Explicație[edit | edit source]

Dintre cele 6 numere citite au oglinditul număr prim: 133 35 31 7. Suma lor este 206.

Rezolvare[edit | edit source]

<syntaxhighlight lang="python" line> def prim(n):

   if n == 0 or n == 1:
       return 0
   if n == 2:
       return 1
   if n % 2 == 0:
       return 0
   for i in range(3, int(n**0.5) + 1, 2):
       if n % i == 0:
           return 0
   return 1


def validare_date(n):

   if n <= 0:
       return False
   return True


if __name__ == '__main__':

   n = int(input("Introduceti numarul de valori: "))
   if validare_date(n):
       s = 0
       for i in range(n):
           x = int(input(f"Introduceti valoarea {i+1}: "))
           if validare_date(x):
               ogl = 0
               aux = x
               while x != 0:
                   ogl = ogl*10 + x%10
                   x //= 10
               if prim(ogl):
                   s += aux
           else:
               print("Datele de intrare nu corespund restricțiilor impuse.")
               break
       else:
           print("\nDatele de intrare corespund restricțiilor impuse.\n")
           print(f"Suma numerelor care au oglinda prima este: {s}")
   else:
       print("Datele de intrare nu corespund restricțiilor impuse.")



</syntaxhighlight>

Explicație rezolvare[edit | edit source]

Acest program primește un număr n de valori de la tastatură și calculează suma tuturor numerelor care au oglinda primă.

Oglinda unui număr este reprezentată de cifrele numărului în ordine inversă. De exemplu, oglinda numărului 1234 este 4321.

Pentru a determina dacă un număr este prim, se verifică dacă acesta este divizibil cu numerele între 2 și rădăcina pătrată a numărului (exclusiv). Dacă numărul este divizibil cu oricare dintre aceste numere, nu este prim.

Funcția validare_date verifică dacă un număr este pozitiv.

Programul afișează mesaje de eroare în cazul în care datele introduse nu corespund restricțiilor impuse și afișează suma numerelor care au oglinda primă în caz contrar.