Pagini recente » Cod sursa (job #2476234) | Cod sursa (job #1741072) | Cod sursa (job #3039431) | Cod sursa (job #3244984) | Cod sursa (job #2613562)
#include <bits/stdc++.h>
#define K100 100000
#define LL long long
using namespace std;
ifstream in("sum.in");
ofstream out("sum.out");
int Div[K100+1][6];
int n,x;
LL suma;
void ciur()
{
for(int i=2;i<=K100;i++)
if(Div[i][0]==0)
{
for(int j=i*2;j<=K100;j+=i)
Div[j][ ++Div[j][0] ]=i;
Div[i][ ++Div[i][0] ]=i;
}
}
LL gauss(LL nr)
{
return ( nr * (nr+1) ) / 2;
}
int main()
{
ciur();
in>>n;
while(n--)
{
in>>x;
if(x==1)
{
out<<0;
continue;
}
suma = gauss(2*x);
int nr,par;
for(int i=1;i< 1<<Div[x][0]; i++)
{
nr=1;par=0;
for(int j=1;j<=Div[x][0];j++)
if( i&( 1<<(j-1) ) )
{
nr*=Div[x][j];
par++;
}
if(par%2)
suma-=gauss(2*x/nr)*nr;
else
suma+=gauss(2*x/nr)*nr;
}
out<<suma<<'\n';
}
return 0;
}