fbpx

Problema #1409 – Numere11 – Rezolvari PBInfo

de Mihai-Alexandru

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 ≤ 10000
  • 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

#include <bits/stdc++.h>
using namespace std;

int cmmdp(int n)
{
    int d=2;
    int p=0;
    int var=0;
    while(n>1)
    {
        p=0;
        while(n%d==0)
        {
            p++;
            n/=d;
        }
        if(p!=0)
            var=d;
        d++;
        if(d*d>n)
            d=n;
    }
    return var;
}

int main()
{
    int n;
    cin >> n;
    int tmp;
    long long int s=0;
    for(int i = 1 ; i <= n ; ++i)
    {
        cin >> tmp;
        s+=cmmdp(tmp);
    }
    cout << s;

    return 0;
}
Comentarii

S-ar putea sa iti placa