Pagini recente » Cod sursa (job #188125) | Cod sursa (job #2168978) | Cod sursa (job #1749734) | Cod sursa (job #685677) | Cod sursa (job #327970)
Cod sursa(job #327970)
#include<cstdio>
#define N 100001
using namespace std;
int i , j , T , M , k;
int phi[N];
void Sieve () {
int i ; int j;
/*
for ( i = 1; i <= N; ++i)
phi[i] = i-1;
for ( i = 2; i <= N; ++i)
for (j = 2*i; j <= N; j += i)
phi[j] -= phi[i];
*/
for (int i=1;i<=N;i++) phi[i]=i;
for (int i=2;i<=N;i++)
if (phi[i]==i)
for (j=i;j<=N;j+=i) phi[j] /=i, phi[j] *= (i-1);
}
/*
int Totient ( int X ) {
int result , i;
float p = X;
for( i = 1 ; primes[i] <= X ; ++i)
if( X % primes[i] == 0 ) p *= ( 1 - ( float )1 / primes[i] );
result = int ( p ) ;
return result;
}
*/
int main ()
{
freopen("sum.in","r",stdin);
freopen("sum.out","w",stdout);
scanf("%d",&T);
Sieve();
for( i = 1 ; i <= T ; ++i ){
scanf("%d" ,&M);
printf("%d\n" , 2 * phi[M] * M );
}
return 0;
}