# PBinfo #1409 – Numere11 – Rezolvare C++

Sursa: Codul lui Andrei
Limbaj: C++
Autor rezolvare: deivid

## Enunț

Cerința
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
Programul citește de la tastatură numărul n, iar apoi n numere naturale.

Date de ieșire
Programul va afișa pe ecran numărul S, reprezentând suma ceruta.

Restricții și precizări

1 ≤ n ≤ 10.000
cele n numere citite vor fi mai mari decât 1 și mai mici decât 1.000.000.000

Exemplu:
Intrare

9
7 30 2 17 14 10 9 3 13
Ieșire

62
Explicație
7 + 5 + 2 + 17 + 7 + 5 + 3 + 3 + 13 = 62

## Cod sursă C++

```cpp
#include <iostream>
#include <cassert>
using namespace std;
int main()
{
    int n , x;
    long long s = 0;
    cin >> n;
    for(int i = 1; i <= n ; i ++)
    {
        cin >> x;
        assert(x > 1 && x < 1000000000);
        int dmax = 0 , d = 2;
        while(x > 1)
        {
            int p = 0;
            while(x % d == 0)
                x /= d, p ++;
            if(p > 0)
                dmax = d;
            d ++;
            if(d * d > x)
                d = x;
        }
        s += dmax;
    }
    cout << s << endl;
    return 0;
}
```

## Resurse

- [Pagina originală](https://codulluiandrei.ro/rezolvari/pbinfo/1409)
- [Sursa C++](https://codulluiandrei.ro/rezolvari/pbinfo/1409/cod.cpp)
- [Sursa pe GitHub](https://raw.githubusercontent.com/codulluiandrei/pbinfo/main/pbinfo-1409/main.cpp)
- [Cursuri de informatică pentru BAC](https://codulluiandrei.ro/academia/info-curs/pachet-cpp/)
