Pagini recente » Cod sursa (job #3232732) | Cod sursa (job #465672) | Cod sursa (job #718692) | Cod sursa (job #578179) | Cod sursa (job #327957)
Cod sursa(job #327957)
#include<cstdio>
#define MAXN 100001
using namespace std;
int i , j , T , M , primes[MAXN / 3] , k;
bool A[MAXN];
void Sieve () {
int i , j;
for ( A[1] = 1 , i = 2 ; i <= MAXN / 2 ; ++i )
A[2 * i] = 1;
for( i = 3 ; i * i <= MAXN ; ++i )
{
if( A[i] == 0 ) {
for( j = i ; j * i <= MAXN ; ++j)
A[j * i] = 1;
}
}
for( i = 1 ; i <= MAXN ; ++i )
if ( A[i] == 0 ) primes[++k] = i ;
}
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 * Totient ( M ) * M );
}
return 0;
}