Cod sursa(job #319650)
Utilizator | alexandru alexandru92 | Data | 1 iunie 2009 18:20:23 |
---|---|---|---|
Problema | Ciurul lui Eratosthenes | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.55 kb |
/*just testing .....*/
#include<stdio.h>
#include<cstdlib>
#define Nmax 2000000/2/8+1
int p[Nmax];
int n,i,j,nr;
int main()
{
// freopen("maxd.in","rt",stdin);
// freopen("maxd.out","wt",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));
for (i = 1; 2 * i + 1 <= n; ++i)
if ((p[i >> 3] & (1 << (i & 7))) == 0) ++nr;
printf("%d\n",nr);
system("PAUSE");
return 0;
}