Cod sursa(job #514274)
Utilizator | Z.Z.Daniel blastoise | Data | 18 decembrie 2010 11:59:08 |
---|---|---|---|
Problema | Ciurul lui Eratosthenes | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.39 kb |
#include <stdio.h>
int i,j,N,sol;
char p[125010];
int main()
{
freopen("ciur.in","r",stdin);
freopen("ciur.out","w",stdout);
scanf("%d",&N);
for(i=1;2*i*i+2*i<=N;i++)
if((p[i/8]&(1<<(i&7)))==0)
for(j=2*i*i+2*i;2*j+1<=N;j+=(2*i+1))
p[j/8]|=(1<<(j&7));
sol=1;
for(i=1;2*i+1<=N;i++)
if((p[i/8]&(1<<(i&7)))==0) sol++;
printf("%d\n",sol);
return 0;
}