Advertisement
Misbah_Uddin_Tareq

Bitwise sieve

Apr 7th, 2020
196
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.73 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. #define ll long long
  3. #define FastRead ios_base::sync_with_stdio(false);cin.tie(NULL);
  4. using namespace std;
  5. bool Check(int N,int pos){ return (bool)(N & (1<<pos));}
  6. void Set(int &N,int pos){ N=N | (1<<pos);}
  7. const int MAX = 1e8+5;
  8. int prime[(MAX>>5)+2];
  9. vector < int > primes;
  10. void sieve()
  11. {
  12.     int lim = sqrt(MAX);
  13.     for(int i=3; i<=lim; i+=2)
  14.     {
  15.         if(!Check(prime[i>>5],i&31))
  16.         {
  17.             for(int j=i*i; j<=MAX; j+=(i<<1))
  18.             {
  19.                 Set(prime[j>>5],j&31);
  20.             }
  21.         }
  22.     }
  23.     primes.push_back(2);
  24.     for(int i=3; i<=MAX; i+=2)
  25.     {
  26.         if(!Check(prime[i>>5],i&31))
  27.             primes.push_back(i);
  28.     }
  29. }
  30. int main()
  31. {
  32.     sieve();
  33. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement