Cod sursa(job #319650)

Utilizator alexandru92alexandru 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;
}