Cod sursa(job #648287)

Utilizator marius135Dumitran Adrian Marius marius135 Data 13 decembrie 2011 11:31:26
Problema Ciurul lui Eratosthenes Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.55 kb
#include<stdio.h>

char v[ 20000001];

int ciur( const int &N){
    if( N <= 1) return 0;
    if( N == 2) return 1;
    int nr = 1;
    for( int i = 3; i <= N; i += 2 ){ 
        if( v[ i ] == 1) continue;
        nr++;
        if( (long long)i * i  > N ) continue;
        for( int j = i * i; j <= N; j = j+ 2*i)
            v[ j ] = 1;
    }
    return nr;
}



int main() {
    int N;
    freopen("ciur.in","r",stdin);
    freopen("ciur.out","w",stdout);

    scanf("%d", &N);
    printf("%d\n", ciur(N));
    

    return 0;
}