0443 - Divizori Primi: Difference between revisions
Paul Matei (talk | contribs) Pagină nouă: == Cerinţa == Se dau '''n''' numere naturale. Calculaţi suma obținută prin adunarea primului divizor prim al fiecărui număr citit. == Date de intrare == Programul citește de la tastatură numărul '''n''', iar apoi '''n''' numere naturale, separate prin spaţii. == Date de ieşire == Programul afișează pe ecran numărul '''S''', reprezentând suma cerută. == Restricții și precizări == *'''1 ≤ n ≤ 1000''' *cele '''n''' numere citite vor fi mai mari decât '''1... |
Diana Butuza (talk | contribs) |
||
Line 15: | Line 15: | ||
:31 | :31 | ||
== Explicație == | == Explicație == | ||
Pentru numerele date, primul divizor prim este | Pentru numerele date, primul divizor prim este '''3 13 3 7 5''', cu suma '''31'''. | ||
== Rezolvare == | == Rezolvare == | ||
<syntaxhighlight lang="python" line> | <syntaxhighlight lang="python" line> |
Latest revision as of 12:01, 9 May 2023
Cerinţa[edit | edit source]
Se dau n numere naturale. Calculaţi suma obținută prin adunarea primului divizor prim al fiecărui număr citit.
Date de intrare[edit | edit source]
Programul citește de la tastatură numărul n, iar apoi n numere naturale, separate prin spaţii.
Date de ieşire[edit | edit source]
Programul afișează pe ecran numărul S, reprezentând suma cerută.
Restricții și precizări[edit | edit source]
- 1 ≤ n ≤ 1000
- cele n numere citite vor fi mai mari decât 1 și mai mici decât 1.000.000.000
Exemplu[edit | edit source]
- Intrare
- 5
15 13 39 49 25
- Ieșire
- 31
Explicație[edit | edit source]
Pentru numerele date, primul divizor prim este 3 13 3 7 5, cu suma 31.
Rezolvare[edit | edit source]
<syntaxhighlight lang="python" line> import math
def prim(n):
d = 2 p = 0 while n > 1: p = 0 while n % d == 0: p += 1 n //= d if p > 0: return d d += 1 if d * d > n: d = n return n
def validare_date():
n = 0 while n <= 0: try: n = int(input("Introduceti n: ")) if n <= 0: print("n trebuie sa fie un numar intreg pozitiv.") except ValueError: print("n trebuie sa fie un numar intreg pozitiv.") return n
if __name__ == '__main__':
if validare_date(): print("\nDatele de intrare corespund restricțiilor impuse.\n") else: print("Datele de intrare nu corespund restricțiilor impuse.")
n = validare_date() s = 0 for i in range(n): x = 0 while x <= 0: try: x = int(input(f"Introduceti x[{i+1}]: ")) if x <= 0: print("x trebuie sa fie un numar intreg pozitiv.") except ValueError: print("x trebuie sa fie un numar intreg pozitiv.") s += prim(x) print(f"Suma divizorilor primi este: {s}")
</syntaxhighlight>
Explicație rezolvare[edit | edit source]
Acest program calculează suma divizorilor primi ai unui set de numere introduse de utilizator. Folosește o funcție pentru a verifica dacă intrarea este validă și o altă funcție pentru a găsi cel mai mic divizor prim al unui număr. Programul calculează suma divizorilor primi pentru fiecare număr introdus de utilizator și le adună pentru a obține o valoare totală, pe care o afișează la final.