Cod sursa(job #780693)

Utilizator my666013Test Here my666013 Data 20 august 2012 23:43:26
Problema Ciurul lui Eratosthenes Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 0.45 kb
#include <cstdio>
#define Max 2000001

unsigned char b[250001],n,nr;

void ciur()
{
    int i = 2;
    while (i <= 1414)
    {
        while( b[i/8]&(1<<(i%8)) )i++;
        for(int j=i*i;j<Max;j+=i) b[j/8] |= 1<<(j%8);
        i++;
    }
    for(int i=2;i<=n;i++)
    if( !(b[i/8]&(1<<(i%8))) )nr++;
}

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

    scanf("%d",&n);

    ciur();

    printf("%d\n",nr);

    return 0;
}