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

Pbinfo #1409
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ât 1 și mai mici decât 1.000.000.000



Exemplu
Intrare

9
7 30 2 17 14 10 9 3 13
Ieșire

62

Răspunsuri la întrebare

Răspuns de pmarian98
1

Răspuns:

#include<bits/stdc++.h>

using namespace std;

long long s;

void desc (int x)

{

   int f=2,u=0;

   if (x%f==0)

       u=f;

   while (x%f==0)

       x/=f;

   for (f=3;f*f<=x&&x!=1;f+=2)

   {

       if (x%f==0)

       u=f;

   while (x%f==0)

       x/=f;

   }

   if (x!=1)

       u=x;

   s=s+u;

}

int main ()

{

   int n,x;

   cin>>n;

   for (;n>0;--n)

   {

       cin>>x;

       desc(x);

   }

   cout<<s<<'\n';

   return 0;

}

Explicație:

Alte întrebări interesante