Pagini recente » Cod sursa (job #105667) | Cod sursa (job #1359174) | Cod sursa (job #704095) | Cod sursa (job #1828933) | Cod sursa (job #57294)
Cod sursa(job #57294)
#include <stdio.h>
#include <memory.h>
#define NMAX 100001
double p[NMAX];
void ciur()
{
long i, j;
double d;
for(j = 2; j < NMAX; ++j)
{
p[j] = j;
if(!(j % 2))
{
//d = j;
p[j] *= 0.5;
}
}
//p[2] = 1;
for(i = 3; i < NMAX; ++i)
{
/*if(!(i % 2))
p[i] = (double)i * 0.5;
*/
if(p[i] == i)
{
for(j = d = i, d = 1 - (double)1/d; j < NMAX; j += i)
{
//if(!p[j])
// p[j] = j;
p[j] *= 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);
//memset(p, 0, sizeof(p));
ciur();
scanf("%ld\n", &n);
while(n--)
{
scanf("%ld\n", &x);
printf("%.0lf\n", 2*p[x]*x);
}
fclose(stdin);
fclose(stdout);
return 0;
}