0407 - Oglindit Prim: Difference between revisions
Paul Matei (talk | contribs) 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... |
Paul Matei (talk | contribs) No edit summary |
||
(One intermediate revision by the same user not shown) | |||
Line 18: | Line 18: | ||
== Rezolvare == | == Rezolvare == | ||
<syntaxhighlight lang="python" line> | <syntaxhighlight lang="python" line> | ||
def | def prim(n): | ||
if n == 0 or n == 1: | |||
if | 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 False | ||
return True | 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.") | |||
Line 53: | Line 65: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
==Explicație rezolvare== | |||
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. |
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.