Pagini recente » Cod sursa (job #2070058) | Cod sursa (job #2971475) | Cod sursa (job #755268) | Cod sursa (job #1780547) | Cod sursa (job #57247)
Cod sursa(job #57247)
#include <stdio.h>
#define NMAX 100010
double p[NMAX];
void ciur()
{
long i, j;
double d;
for(j = 2; j < NMAX; j += 2)
{
d = j;
p[j] = d * (1 - (double)1/2);
}
for(i = 3; i < NMAX; i += 2)
{
if(!p[i])
{
d = i;
for(j = i; j < NMAX; j += i)
{
if(!p[j])
p[j] = j;
p[j] *= (1 - 1/d);
}
}
//printf("%ld are %d div primi\n", i, p[i]);
}
}
int main()
{
long n, x;
freopen("sum.in", "r", stdin);
freopen("sum.out", "w", stdout);
ciur();
scanf("%ld\n", &n);
while(n--)
{
scanf("%ld\n", &x);
printf("%.0lf\n", 2*p[x]*x);
}
fclose(stdin);
fclose(stdout);
return 0;
}