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