Cod sursa(job #1147367)

Utilizator binicBinica Nicolae binic Data 19 martie 2014 19:32:16
Problema Ciurul lui Eratosthenes Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 0.47 kb
#include<cstdio>
using namespace std;
int n,i,j,nr;
char p[1700000];
int main ()
{
	freopen("ciur.in","r",stdin);
	freopen("ciur.out","w",stdout);
	scanf("%d",&n);
    nr=1;
    for(i=1;((i*i)<<1)+(i<<1)<=n;i+=1)
        if((p[i>>3]&(1<<(i&7)))==0)
            for(j=((i*i)<<1)+(i<<1);(j<<1)+1<=n;j+=(i<<1)+1)
                p[j>>3]+=(1<<(j&7));
    for(i=1;2*i+1<=n;i++)
        if((p[i>>3]&(1<<(i&7)))==0)
            nr++;
    printf("%d\n",nr);
	return 0;
}