Pagini recente » Cod sursa (job #1703761) | Cod sursa (job #2998754) | Cod sursa (job #64789) | Cod sursa (job #1976060) | Cod sursa (job #59105)
Cod sursa(job #59105)
#include <stdio.h>
#define NMAX 100001
long long N, X;
long long a[NMAX], phi[NMAX];
long long p[78500], n;
void sieve() {
int i, j;
for (i = 2; i < NMAX; ++i)
if (!a[i]) {
p[n++] = i;
for (j = 2*i; j < NMAX; j += i)
a[j] = 1;
}
}
void comp() {
int i, j;
for (i = 2; i < NMAX; ++i) {
if (!a[i])
phi[i] = i-1;
else {
for (j = 0; i % p[j]; ++j)
;
if (i/p[j] % p[j])
phi[i] = phi[p[j]] * phi[i/p[j]];
else
phi[i] = p[j] * phi[i/p[j]];
}
}
}
int main() {
FILE *fi = freopen("sum.in", "r", stdin);
FILE *fo = freopen("sum.out", "w", stdout);
int i;
scanf("%d", &N);
sieve();
comp();
for (i = 0; i < N; ++i) {
scanf("%d", &X);
printf("%lld\n", 2*X*phi[X]);
}
//printf("%d", phi[100000]);
return 0;
}