Pagini recente » Cod sursa (job #2706819) | Cod sursa (job #1662493) | Cod sursa (job #2389196) | Cod sursa (job #1215596) | Cod sursa (job #1874159)
# include <fstream>
# include <cstdio>
# include <cstdlib>
using namespace std;
class ifbuffer {
private:
char text[100000];
int size;
int pos;
bool isDigit[128];
FILE *file;
inline void refill( void ) {
pos = 0;
fread( text, 1, size, file );
}
inline char getc() {
char c = text[pos ++];
if ( pos == size )
refill();
return c;
}
inline int getnr() {
char c = getc();
int nr = 0, p;
while ( !isDigit[c] && c != '-' )
c = getc();
if ( c == '-' ) {
p = -1;
c = getc();
} else
p = 1;
while ( isDigit[c] ) {
nr = nr * 10 + c - '0';
c = getc();
}
return nr * p;
}
public:
inline ifbuffer( char * path, int s = 100000 ) {
size = s;
file = fopen( path, "r" );
int i;
for ( i = 0; i < '0'; i ++ )
isDigit[i] = false;
for ( i = '0'; i <= '9'; i ++ )
isDigit[i] = true;
for ( i = '9' + 1; i < 128; i ++ )
isDigit[i] = false;
refill();
}
inline ifbuffer &operator>>( int &v ) {
v = getnr();
return *this;
}
inline ifbuffer &operator>>( char &v ) {
v = getc();
return *this;
}
inline void close() {
fclose( file );
}
};
const int MAX_N = 100000;
int phi[1 + MAX_N];
int main() {
ifbuffer fin( "sum.in" );
ofstream fout( "sum.out" );
for ( int i = 2; i <= MAX_N; i ++ )
phi[i] = i;
for ( int i = 2; i <= MAX_N; i ++ )
if ( phi[i] == i )
for ( int j = i; j <= MAX_N; j += i )
phi[j] -= phi[j] / i;
int n;
fin >> n;
for ( int i = 0; i < n; i ++ ) {
int x;
fin >> x;
fout << ( long long ) phi[x] * x * 2 << '\n';
}
fin.close();
fout.close();
return 0;
}