Cod sursa(job #652387)

Utilizator rootsroots1 roots Data 24 decembrie 2011 12:13:21
Problema Ciurul lui Eratosthenes Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.56 kb
#include <fstream>

#define Ciur 125001

using namespace std;

ifstream in;
ofstream out;

char p[Ciur];

int main()
{
    int N,cnt;

    in.open("ciur.in");

    in>>N;

    in.close();

    for(int i=1;((i*i)<<2)+(i<<1)+1<=N;++i)
        if((p[i>>3]&(1<<(i&7)))==0)
            for(int j=((i*i)<<1)+i;(j<<1)+1<=N;j+=(i<<1)+1)
                p[j>>3]|=(1<<(j&7));

    cnt=1;
    for(int i=1;(i<<1)+1<=N;++i)
        if((p[i>>3]&(1<<(i&7)))==0) ++cnt;

    out.open("ciur.out");

    out<<cnt<<'\n';

    out.close();

    return 0;
}