Pagini recente » Cod sursa (job #834994) | Cod sursa (job #2582078) | Cod sursa (job #2402496) | Cod sursa (job #2624895) | Cod sursa (job #676326)
Cod sursa(job #676326)
#include <cstdio>
#include <iostream>
#include <cstring>
using namespace std;
#define maxN 200005
int N , X , fact[325] , dim;
bool ci[maxN];
void descompune (int X)
{
int d = 2;
dim = 0;
while (X != 1)
{
if (X % d == 0)
fact[++dim] = d;
while (X % d == 0)
X /= d;
++d;
}
}
void ciur (int X)
{
for (int t = 1 ; t <= dim ; ++t)
for (int i = fact[t] ; i <= 2 * X ; i += fact[t])
ci[i] = true;
}
long long solve (int X)
{
long long sol = 0;
for (int i = 1 ; i <= 2 * X ; ++i)
if (!ci[i])
sol += i;
memset (ci , 0 , sizeof (ci));
return sol;
}
int main ()
{
freopen ("sum.in" , "r" , stdin);
freopen ("sum.out" , "w" , stdout);
scanf ("%d" , &N);
long long sol;
int prec = -1;
for (int i = 1 ; i <= N ; ++i)
{
scanf ("%d" , &X);
descompune (X);
if (X != prec)
{
ciur (X);
prec = X;
}
sol = solve (X);
printf ("%lld\n" , sol);
}
return 0;
}