Cod sursa(job #547885)
| Utilizator | Data | 6 martie 2011 19:44:06 | |
|---|---|---|---|
| Problema | Ciurul lui Eratosthenes | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.5 kb |
#include <stdio.h>
#include <string.h>
#define dim 125005
char p[dim];
int i,j,N,size;
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((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));
size=1;
for(i=1;((i<<1)+1)<=N;i++)
if((p[i>>3]&(1<<(i&7)))==0)
size++;
printf("%d\n",size);
return 0;
}
