Pagini recente » Cod sursa (job #457947) | Cod sursa (job #1377800) | Cod sursa (job #386061) | Cod sursa (job #1404746) | Cod sursa (job #1184158)
#include <stdio.h>
#define N_MAX 1000000
#define NR_PRIME 100000
int v[ NR_PRIME ], ind = 0;
void ciur ( int n ){
char prim[ n ];
int i, j;
for ( i = 2; i <= n; i++ ) prim[ i ] = 0;
for ( i = 2; i <= n; i++ ){
if ( !prim[ i ] ){
v[ ind ] = i;
ind++;
for ( j = i * i; j <= n; j += i ){
prim[ i ] = 1;
}
}
}
return ;
}
int phi ( int n ){
int i, rez = 1, primul;
for ( i = 0; i < ind; i++ ){
primul = 1;
while ( n % v[ i ] == 0 ){
n /= v[ i ];
if ( primul ){
rez *= v[ i ] - 1;
}
else{
rez *= v[ i ];
}
primul = 0;
}
}
return rez;
}
int main()
{
FILE *in = fopen ( "fractii.in", "r" );
int n;
fscanf ( in, "%d", &n );
fclose ( in );
ciur ( n );
long long rez = 1;
int i;
for ( i = 2; i <= n; i++ ){
rez += 2 * phi ( i );
}
FILE *out = fopen ( "fractii.out", "w" );
fprintf ( out, "%lld", rez );
fclose ( out );
return 0;
}