Advertisement
LinKin

Sieve by Yarin

Oct 30th, 2013
221
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.49 KB | None | 0 0
  1. // Super fast & Memory-tight Sieve by Yarin
  2. #define MAXSIEVE 10000000 // All prime numbers up to this
  3. #define MAXSIEVEHALF (MAXSIEVE/2)
  4. #define MAXSQRT 5000 // sqrt(MAXSIEVE)/2
  5. char a[MAXSIEVE/16+2];
  6. #define isprime(n) (a[(n)>>4]&(1<<(((n)>>1)&7))) // Works when n is odd
  7. //have to check for even numbers
  8. void sieve()
  9. {
  10.     int i,j;
  11.     memset(a,255,sizeof(a));
  12.     a[0]=0xFE;
  13.     for(i=1;i<MAXSQRT;i++)
  14.         if (a[i>>3]&(1<<(i&7)))
  15.             for(j=i+i+i+1;j<MAXSIEVEHALF;j+=i+i+1)
  16.                 a[j>>3]&=~(1<<(j&7));
  17. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement