267
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â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