365
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
nnumere citite vor fi mai mari decât1și mai mici decât1.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