1409 - Numere 11
Cerinţa[edit | edit source]
Se dau n numere naturale. Calculați suma obținută prin adunarea celui mai mare divizor prim al fiecărui număr dat.
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 va afișa pe ecran numărul S, reprezentând suma ceruta.
Restricții și precizări[edit | edit source]
- 1 ≤ n ≤ 10000
- 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
- 9
7 30 2 17 14 10 9 3 13
- Ieșire
- 62
Explicație[edit | edit source]
7 + 5 + 2 + 17 + 7 + 5 + 3 + 3 + 13 = 62
Rezolvare[edit | edit source]
<syntaxhighlight lang="python" line> import math
def factor_prim_maxim(n):
d = 2 var = 0 while n > 1: p = 0 while n % d == 0: p += 1 n //= d if p != 0: var = d d += 1 if d * d > n: if n > 1: var = n break return var
def validare_date(n):
if n < 1: print("Intrare nevalidă! Numărul de numere întregi trebuie să fie pozitiv.") return False return True
if __name__ == '__main__':
n = int(input("Introduceți numărul de numere întregi: ")) if validare_date(n): print("\nDatele de intrare corespund restricțiilor impuse.\n") s = 0 for i in range(n): tmp = int(input(f"Introduceți numărul întreg {i+1}: ")) s += factor_prim_maxim(tmp) print(s)
</syntaxhighlight>
Explicație rezolvare[edit | edit source]
Acest program primește de la utilizator un număr n și n numere întregi și calculează suma factorilor primi maximi ai acestor numere. Programul verifică mai întâi dacă n este pozitiv și apoi calculează factorii primi maximi pentru fiecare număr întreg dat prin intermediul unei funcții numite factor_prim_maxim. Rezultatul final este suma totală a factorilor primi maximi.