Pagini recente » Cod sursa (job #3255483) | Cod sursa (job #2485073) | Cod sursa (job #120487) | Cod sursa (job #2784990) | Cod sursa (job #993704)
Cod sursa(job #993704)
#include <cstdio>
#include <cmath>
using namespace std;
bool v[200002];
inline int fact_prim(int n)
{
int i,lim,s,k,ok,cop;
s=n*((2*n)+1);
v[n]=v[2*n]=1;
s=s-3*n;
cop=n;
lim=(int)sqrt((double)n);
for (i=2;i<=lim+1&&n>0;i++)
{
ok=0;
while (n>0&&n%i==0)
{
ok=1;
n=n/i;
}
if (ok==1)
for (k=i;k<=cop*2;k=k+i)
{
if (v[k]==0)
s=s-k;
v[k]=1;
}
}
for (i=1;i<=2*n;i++)
v[i]=0;
return s;
}
int main()
{
freopen("sum.in","r",stdin);
freopen("sum.out","w",stdout);
int n,x,i,s;
scanf("%d",&n);
for (i=1;i<=n;i++)
{
scanf("%d",&x);
s=fact_prim(x);
printf("%d\n",s);
}
return 0;
}