312
Cerinţa
Se dau n
numere naturale. Calculaţi suma obținută prin adunarea primului divizor prim al fiecărui număr citit.
Date de intrare
Programul citește de la tastatură numărul n
, iar apoi n
numere naturale, separate prin spaţii.
Date de ieşire
Programul afișează pe ecran numărul S
, reprezentând suma cerută.
Restricţii şi precizări
1 ≤ n ≤ 1000
- cele
n
numere citite vor fi mai mari decât1
și mai mici decât1.000.000.000
Exemplu
Intrare
5 15 13 39 49 25
Ieșire
31
Explicație
Pentru numerele date, primul divizor prim este, respectiv: 3 13 3 7 5
, cu suma 31
.
#include <bits/stdc++.h> using namespace std; int prim(long long n) { long long d=2; long long p; while (n>1) { p=0; while(n%d==0) {p++;n/=d;} if(p>0) return d; d++; if(d*d>n) d=n; } } int main() { long long n,x,s=0; cin>>n; for(int i=1;i<=n;i++) { cin>>x; s=s+prim(x); } cout<<s; return 0; }
Comentarii