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
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
Informatică,
8 ani în urmă
Limba română,
8 ani în urmă
Geografie,
8 ani în urmă
Limba română,
8 ani în urmă
Matematică,
8 ani în urmă
Matematică,
9 ani în urmă
Biologie,
9 ani în urmă