Pagini recente » Cod sursa (job #1815176) | Cod sursa (job #2838941) | Cod sursa (job #2825235) | Cod sursa (job #1369402) | Cod sursa (job #993705)
Cod sursa(job #993705)
#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>1;i++)
{
ok=0;
while (n>1&&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;
}