0406 - Sum Cif Prim: Difference between revisions
Paul Matei (talk | contribs) Pagină nouă: == Cerinţa == Se dă un șir cu '''n''' numere naturale. Determinați câte dintre ele sunt prime și au suma cifrelor un 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 '''C''', 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''' ==... |
Paul Matei (talk | contribs) No edit summary |
||
Line 18: | Line 18: | ||
== Rezolvare == | == Rezolvare == | ||
<syntaxhighlight lang="python" line> | <syntaxhighlight lang="python" line> | ||
def is_prime( | def is_prime(n): | ||
if n < 2: | |||
if | |||
return False | return False | ||
for i in range(2, int( | for i in range(2, int(n ** 0.5) + 1): | ||
if | if n % i == 0: | ||
return False | return False | ||
return True | return True | ||
def sum_digits(n): | |||
return sum(int(d) for d in str(n)) | |||
def | def validare_date(n, nums): | ||
if n < 1 or n > 1000: | |||
return False | |||
for num in nums: | |||
if num < 1 or num > 1000000000: | |||
return False | |||
return True | |||
for | |||
if __name__ == '__main__': | |||
n = int(input("Introduceți numărul de numere: ")) | |||
nums = [] | |||
for i in range(n): | |||
num = int(input(f"Introduceți numărul {i+1}: ")) | |||
nums.append(num) | |||
if validare_date(n, nums): | |||
count = 0 | |||
for num in nums: | |||
if is_prime(num) and is_prime(sum_digits(num)): | |||
count += 1 | |||
print(f"Numărul de numere prime cu suma cifrelor primă este: {count}") | |||
else: | |||
print("Datele de intrare nu corespund restricțiilor impuse.") | |||
</syntaxhighlight> | </syntaxhighlight> | ||
==Explicație rezolvare== | |||
Acest cod primește un număr '''n''' și o listă de '''n''' numere și numără câte dintre aceste numere sunt prime și au suma cifrelor, de asemenea, un număr prim. Pentru a face acest lucru, codul utilizează funcțiile '''is_prime''' și '''sum_digits''' pentru a verifica dacă un număr este prim și dacă suma cifrelor sale este, de asemenea, un număr prim. De asemenea, codul include o funcție '''validare_date''' care verifică dacă datele introduse de utilizator respectă restricțiile impuse. Dacă datele sunt valide, programul numără numerele prime din listă care au suma cifrelor, de asemenea, un număr prim și afișează rezultatul. În caz contrar, programul afișează un mesaj corespunzător. |
Latest revision as of 19:35, 9 April 2023
Cerinţa[edit | edit source]
Se dă un șir cu n numere naturale. Determinați câte dintre ele sunt prime și au suma cifrelor un 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 C, 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
83 36 53 401 90 7
- Ieșire
- 3
Explicație[edit | edit source]
Dintre cele 6 numere citite sunt prime : 83 53 401 7. Dintre ele 83 401 7 suma cifrelor număr prim, respectiv 11 5 7. În consecință, sunt 3 numere care respectă regula.
Rezolvare[edit | edit source]
<syntaxhighlight lang="python" line> def is_prime(n):
if n < 2: return False for i in range(2, int(n ** 0.5) + 1): if n % i == 0: return False return True
def sum_digits(n):
return sum(int(d) for d in str(n))
def validare_date(n, nums):
if n < 1 or n > 1000: return False for num in nums: if num < 1 or num > 1000000000: return False return True
if __name__ == '__main__':
n = int(input("Introduceți numărul de numere: ")) nums = [] for i in range(n): num = int(input(f"Introduceți numărul {i+1}: ")) nums.append(num)
if validare_date(n, nums): count = 0 for num in nums: if is_prime(num) and is_prime(sum_digits(num)): count += 1 print(f"Numărul de numere prime cu suma cifrelor primă este: {count}") else: print("Datele de intrare nu corespund restricțiilor impuse.")
</syntaxhighlight>
Explicație rezolvare[edit | edit source]
Acest cod primește un număr n și o listă de n numere și numără câte dintre aceste numere sunt prime și au suma cifrelor, de asemenea, un număr prim. Pentru a face acest lucru, codul utilizează funcțiile is_prime și sum_digits pentru a verifica dacă un număr este prim și dacă suma cifrelor sale este, de asemenea, un număr prim. De asemenea, codul include o funcție validare_date care verifică dacă datele introduse de utilizator respectă restricțiile impuse. Dacă datele sunt valide, programul numără numerele prime din listă care au suma cifrelor, de asemenea, un număr prim și afișează rezultatul. În caz contrar, programul afișează un mesaj corespunzător.