Cod sursa(job #1111115)

Utilizator mirceadinoMircea Popoveniuc mirceadino Data 18 februarie 2014 17:20:10
Problema Ciurul lui Eratosthenes Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.52 kb
#include<cstdio>
#include<bitset>

using namespace std;

const int NMAX = 2000000+2;

int N,sol;
bitset<NMAX> B;

int main()
{
    int i,j,k,l;

    freopen("ciur.in","r",stdin);
    freopen("ciur.out","w",stdout);

    scanf("%d",&N);

    for(i=1,k=3; k*k<=N; i++,k+=2)
        if(!B[i])
        {
            sol++;
            for(j=k*k/2,l=k*k; l<=N; j+=k,l+=2*k)
                B[j]=1;
        }

    for(; k<=N; i++,k+=2)
        if(!B[i]) sol++;

    printf("%d\n",sol+1);

    return 0;
}