Cod sursa(job #652391)

Utilizator rootsroots1 roots Data 24 decembrie 2011 12:19:48
Problema Ciurul lui Eratosthenes Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.57 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<<2)+1<=N;++i)
        if((p[i>>3]&(1<<(i&7)))==0)
            for(int j=((i*i)<<1)+(i<<1);(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;
}