Cod sursa(job #1414025)

Utilizator delia_99Delia Draghici delia_99 Data 2 aprilie 2015 11:52:09
Problema Ciurul lui Eratosthenes Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.52 kb
#include <cstdio>
using namespace std;
int n,i,j,nr=1;
int ap[125005];
int main()
{
    freopen("ciur.in","r",stdin);
    freopen("ciur.out","w",stdout);
    scanf("%d",&n);
    for(i=1; ((i*i)<<1)+(i<<1)<=n; ++i)
        if((ap[i>>3] & (1<<(i&7)))==0)
        {
            for(j=((i*i)<<1)+(i<<1); (j<<1)+1<=n; j+=(i<<1)+1)
                ap[j>>3] |= (1<<(j&7));
        }
    for(i=1; (i<<1)+1<=n; ++i)
        if((ap[i>>3] & (1<<(i&7)))==0)
            ++nr;

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

    return 0;
}