0407 - Oglindit Prim: Difference between revisions

From Bitnami MediaWiki
Pagină nouă: == Cerinţa == Se dă un șir cu '''n''' numere naturale. Determinați suma celor care au oglinditul număr prim. == Date de intrare == Programul citește de la tastatură numărul '''n''', iar apoi '''n''' numere naturale. == Date de ieşire == Programul afișează pe ecran numărul '''S''', reprezentând rezultatul cerut. == Restricții și precizări == *'''1 ≤ n ≤ 1000''' *cele '''n''' numere citite vor fi mai mici decât '''1.000.000.000''' == Exemplu == ; Intrare :6...
 
No edit summary
Line 18: Line 18:
== Rezolvare ==
== Rezolvare ==
<syntaxhighlight lang="python" line>
<syntaxhighlight lang="python" line>
def is_prime(num):
def prim(n):
     """Verifică dacă un număr este prim."""
     if n == 0 or n == 1:
     if num < 2:
        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 validate_input(n):
     if n <= 0:
         return False
         return False
    for i in range(2, int(num ** 0.5) + 1):
        if num % i == 0:
            return False
     return True
     return True




def reverse_number(num):
if __name__ == '__main__':
     """Returnează oglinditul unui număr."""
     n = int(input("Introduceti numarul de valori: "))
     reversed_num = 0
     if validate_input(n):
    while num > 0:
         s = 0
         reversed_num = reversed_num * 10 + num % 10
         for i in range(n):
         num //= 10
             x = int(input(f"Introduceti valoarea {i+1}: "))
    return reversed_num
             if validate_input(x):
 
                ogl = 0
 
                aux = x
def validate_input(prompt, lower_bound, upper_bound):
                while x != 0:
    """Solicită introducerea unui număr întreg în intervalul [lower_bound, upper_bound]"""
                    ogl = ogl*10 + x%10
    while True:
                    x //= 10
        try:
                 if prim(ogl):
             num = int(input(prompt))
                    s += aux
             if lower_bound <= num <= upper_bound:
                 return num
             else:
             else:
                 print(f"Introduceți un număr întreg în intervalul [{lower_bound}, {upper_bound}]")
                 print("Datele de intrare nu corespund restricțiilor impuse.")
        except ValueError:
                break
            print("Introduceți un număr întreg valid.")
        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.")




Line 53: Line 64:


</syntaxhighlight>
</syntaxhighlight>
==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.
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.
Î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ă.
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.
La sfârșit, se afișează suma numerelor care au oglinda un număr prim.

Revision as of 18:08, 2 April 2023

Cerinţa

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

Date de intrare

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

Date de ieşire

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

Restricții și precizări

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

Exemplu

Intrare
6

133 35 41 31 90 7

Ieșire
206

Explicație

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

Rezolvare

<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 validate_input(n):

   if n <= 0:
       return False
   return True


if __name__ == '__main__':

   n = int(input("Introduceti numarul de valori: "))
   if validate_input(n):
       s = 0
       for i in range(n):
           x = int(input(f"Introduceti valoarea {i+1}: "))
           if validate_input(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

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.

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.

Î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ă.

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.

La sfârșit, se afișează suma numerelor care au oglinda un număr prim.