👤

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ăspuns :

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:

Vă mulțumim pentru vizita pe site-ul nostru dedicat Informatică. Sperăm că informațiile oferite v-au fost de ajutor. Nu ezitați să ne contactați pentru orice întrebare sau dacă aveți nevoie de asistență suplimentară. Vă așteptăm cu drag data viitoare și nu uitați să ne adăugați la favorite!


ID Learners: Alte intrebari