Cod sursa(job #462394)
# include <cstdio>
const char FIN[] = "sum.in", FOU[] = "sum.out";
const int MAX = 100005, hg = 1 << 13;
int V[MAX];
int T, X, poz;
char ch[hg];
inline void cit (int &x)
{
x = 0;
if ( ch[0] == '\0' ) fread (ch, 1, hg, stdin);
else while ( ch[poz] < '0' || ch[poz] > '9' )
if ( ++poz == hg )
fread (ch, 1, hg, stdin), poz = 0;
while ( ch[poz] >= '0' && ch[poz] <= '9' )
{
x = x * 10 + ch[poz] - '0';
if ( ++poz == hg )
fread (ch, 1, hg, stdin), poz = 0;
}
}
void ciur ()
{
for ( int i = 1; i <= MAX; ++i )
V[i] = i;
for ( int i = 2; i <= MAX; ++i )
if ( V[i] == i )
for ( int j = i; j <= MAX; j += i )
V[j] /= i, V[j] *= (i - 1) ;
}
int main()
{
freopen ( FIN, "r", stdin );
freopen ( FOU, "w", stdout );
ciur () ;
for ( cit ( T ) ; T ; --T )
{
cit ( X ) ;
printf("%lld\n" , ( long long ) V[X] * X << 1);
}
return 0;
}