Pagini recente » Cod sursa (job #614233) | Cod sursa (job #1463163) | Cod sursa (job #1677363) | Cod sursa (job #75703) | Cod sursa (job #57298)
Cod sursa(job #57298)
#include <stdio.h>
#include <memory.h>
#define NMAX 100001
double p[NMAX];
void ciur()
{
int i, j;
double d;
/*for(j = 4, p[2] = 1; j < NMAX; j += 2)
{
p[j] = j;
p[j-1] = j-1;
if(j % 2 == 0)
p[j] *= 0.5;
}
*/
p[2] = 2;
for(i = 3; i < NMAX; i += 2)
{
if(p[i] == 0)
p[i] = i;
if(p[i-1] == 0)
p[i-1] = i-1;
p[i-1] *= 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()
{
int n, x;
freopen("sum.in", "r", stdin);
freopen("sum.out", "w", stdout);
//memset(p, 0, sizeof(p));
ciur();
scanf("%d\n", &n);
while(n--)
{
scanf("%d\n", &x);
printf("%.0lf\n", 2*p[x]*x);
}
fclose(stdin);
fclose(stdout);
return 0;
}