Pagini recente » Cod sursa (job #3360882) | Cod sursa (job #3360886) | Cod sursa (job #3360900) | Cod sursa (job #3360884) | Cod sursa (job #3360887)
#include <stdio.h>
#define MAXX 200000
char nrdp[MAXX + 1];
long long sump[MAXX + 1];
static inline long long form ( int a , int b ) {
int rab;
rab = b / a;
return a * ( ( long long ) rab + 1 ) * rab / 2;
}
int main () {
FILE *fin , *fout;
int n , i , j , x;
for ( i = 2 ; i <= MAXX ; i++ )
if ( nrdp[i] == 0 )
for ( j = i ; j <= MAXX ; j = j + i )
nrdp[j]++;
for ( i = 2 ; i * i <= MAXX ; i++ )
if ( nrdp[i] == 1 )
for ( j = i * i ; j <= MAXX ; j = j + i * i )
nrdp[j] = -1;
for ( i = 1 ; i <= MAXX ; i++ )
sump[i] = ( ( long long ) 2 * i + 1 ) * ( 2 * i ) / 2;
for ( i = 2 ; i <= MAXX ; i++ )
if ( nrdp[i] != -1 )
for ( j = i ; j <= MAXX ; j = j + i ) {
if ( nrdp[i] % 2 == 0 ) // e cu +
sump[j] = sump[j] + form ( i , 2 * j );
else
sump[j] = sump[j] - form ( i , 2 * j );
}
fin = fopen ( "sum.in" , "r" );
fscanf ( fin , "%d" , &n );
fout = fopen ( "sum.out" , "w" );
for ( i = 0 ; i < n ; i++ ) {
fscanf ( fin , "%d" , &x );
fprintf ( fout , "%lld\n" , sump[x] );
}
fclose ( fin );
fclose ( fout );
return 0;
}