Pagini recente » Cod sursa (job #2622877) | Cod sursa (job #1366517) | Cod sursa (job #206020) | Cod sursa (job #1934379) | Cod sursa (job #492523)
Cod sursa(job #492523)
# include <fstream>
# include <cstring>
# include <cmath>
using namespace std;
unsigned char V[1 << 17];
int P[1241] ;
void prec ( void ) {
for (int i = 1; ( i * i << 1 ) + ( i << 1 ) <= 1000; ++i) {
if ( ( V[i >> 3] & ( 1 << ( i & 7 ) ) ) ) {
continue;
}
for (int j = ( i * i << 1 ) + ( i << 1 ); ( j << 1 ) + 1 <= 1000; j += ( i << 1 ) + 1) {
V[j >> 3] |= ( 1 << ( j & 7 ) );
}
}
P[ ++P[0] ] = 2 ;
for (int i = 1; ( i << 1 ) + 1 <= 1000; ++i) {
if ( ( V[i >> 3] & ( 1 << ( i & 7 ) ) ) == 0 ) {
P[ ++P[0] ] = ( i << 1 ) + 1 ;
}
}
}
int fi(int n) {
int result = n;
for(int i = 1; P[i]*P[i] <= n && i <= P[0]; i++) {
if (n % P[i] == 0) result -= result / P[i];
while (n % P[i] == 0) n /= P[i];
}
if (n > 1) result -= result / n;
return result;
}
int main() {
int n ;
long long nr = 0;
prec () ;
fscanf ( fopen ( "fractii.in", "r" ) , "%d", &n ) ;
for (int i=2; i<=n; i++)
nr += fi ( i ) ;
fprintf ( fopen ( "fractii.out", "w" ), "%lld", nr * 2 + 1 ) ;
return 0;
}