Cod sursa(job #2257738)
Utilizator | Data | 10 octombrie 2018 14:23:23 | |
---|---|---|---|
Problema | Sum | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.57 kb |
#include <cstdio>
using namespace std;
const int NMAX = 100000;
int eul[NMAX+1];
void euler() {
for(int i = 1; i <= NMAX; i++) eul[i] = i;
for(int i = 2; i <= NMAX; i++)
if (eul[i] == i)
for(int j = i; j <= NMAX; j += i)
eul[j] /= i, eul[j] *= (i-1);
}
int main()
{
freopen("sum.in", "r", stdin);
freopen("sum.out", "w", stdout);
euler();
int n;
scanf("%i", &n);
while(n--) {
int x;
scanf("%i", &x);
printf("%lld\n", 2LL * x * eul[x]);
}
return 0;
}