Informatică, întrebare adresată de rester, 8 ani în urmă

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 boiustef
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