Cod sursa(job #1413360)

Utilizator popescu.octavianPopescu Octavian popescu.octavian Data 1 aprilie 2015 20:30:58
Problema Ciurul lui Eratosthenes Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.49 kb
#include <fstream>
#define NMax 2000000/16+1
using namespace std;

ifstream f("ciur.in");
ofstream g("ciur.out");

char p[NMax];
int n;

int ciur(int n)
{
    int i, j, nr=1;
    for(i=1;2*i*i+2*i<=n;i++)
        if(!((p[i/8])&(1<<(i%8))))
            for(j=2*i*i+2*i;2*j+1<=n;j+=2*i+1)
                p[j/8]=p[j/8]|(1<<(j%8));
    for(i=1;2*i+1<=n;i++)
        if(!(p[i/8]&(1<<(i%8))))
            nr++;
    return nr;
}
int main()
{
    f>>n;
    g<<ciur(n);
    return 0;
}