Cod sursa(job #1170161)

Utilizator bciobanuBogdan Ciobanu bciobanu Data 12 aprilie 2014 19:37:27
Problema Ciurul lui Eratosthenes Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.58 kb
#include <cstdio>
#include <vector>
static const int NMAX=2000005;
std::vector<unsigned char> V(NMAX,0);
int ciur(int limit)
{
    int i,j,ii,nrprime=1; // il includ pe 2
    for (i=3;i<=limit;i+=2)
    {
        if (!(V[i>>4]&(1<<((i>>1)&7))))
        {
            ++nrprime;
            for (j=i+(ii=i<<1);j<=limit;j+=ii) V[j>>4]|=1<<((j >> 1)&7);
        }
    }
    return nrprime;
}
int main()
{
    FILE *in=fopen("ciur.in","rt"),*out=fopen("ciur.out","wt");
    int n;
    fscanf(in,"%d",&n);
    fclose(in);
    fprintf(out,"%d\n",ciur(n));
    fclose(out);
}