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ât 1 și mai mici decât 1.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.
link:https://www.pbinfo.ro/?pagina=probleme&id=443
Răspunsuri la întrebare
Răspuns de
3
Răspuns:
#include <iostream>
using namespace std;
int factor(int num)
{
int r=num;
for (int d = 3; d*d <= num; d += 2)
if (num%d == 0)
{
r=d; break;
}
return r;
}
int main()
{
int n, i;
long long s=0, num;
cin >> n;
for (i=1; i<=n; i++)
{
cin >> num;
if (num%2==0) s+=2;
else
{
s=s+factor(num);
}
}
cout << s;
return 0;
}
Explicație:
rester:
Multumesc mult!
Alte întrebări interesante
Studii sociale,
8 ani în urmă
Limba română,
8 ani în urmă
Limba română,
8 ani în urmă
Limba română,
8 ani în urmă
Franceza,
9 ani în urmă
Limba română,
9 ani în urmă
Matematică,
9 ani în urmă