Cod sursa(job #1317860)

Utilizator bciobanuBogdan Ciobanu bciobanu Data 15 ianuarie 2015 12:05:21
Problema Ciurul lui Eratosthenes Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
#include <cstdio>

using namespace std;

#define MAX_N 2100000

inline int ciur( const int &N ) {
    char ciur[ MAX_N >> 1 ];
    int sol = 1;
    int i, k, lim, j;
    lim = N >> 1;
    for( i = 1, k = 3; k * k <= N; ++i, k += 2 ) {
        if( !ciur[ i ] ) {
            ++sol;
            for( j = k * k >> 1; j <= lim; j += k )
                ciur[ j ] = 1;
        }
    }
    for( ; k <= N; ++i, k += 2 )
        if( !ciur[ i ] )
            ++sol;
    return sol;
}
FILE *f;
int main() {
    int N;
    f = fopen( "ciur.in", "r" );
    fscanf( f, "%d", &N );
    fclose( f );
    f = fopen( "ciur.out", "w" );
    fprintf( f, "%d\n", ciur( N ) );
    fclose( f );
    return 0;
}