summaryrefslogtreecommitdiff
path: root/math/primeSieve.cpp
blob: 183d74278e25456eb25f85e9ce929ef704375246 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#define N 10000001
vector<ll> primes;
//Finds all prime numbers between 0..N
//Use this method for N < 10000000 to avoid memory access errors
void primeSieve() {
  bitset<N> isPrime; isPrime.set();
  isPrime[0] = isPrime[1] = 0;
  for(ll i = 2; i < N+1; i+=2) {
      if(isPrime[i]) {
	      for(ll j = i*i; j >= 0 && j < N+1; j+=i) isPrime[j] = 0;
	      primes.push_back(i);
      }
      if(i == 2) i--;
  }
}