Skip to content

Instantly share code, notes, and snippets.

@mpoullet
Forked from rongjiecomputer/prime.cpp
Created February 2, 2018 12:33
Show Gist options
  • Save mpoullet/67dda56cdc186a0384487af3f16f98e8 to your computer and use it in GitHub Desktop.
Save mpoullet/67dda56cdc186a0384487af3f16f98e8 to your computer and use it in GitHub Desktop.
Sieve of Eratosthenes with C++ constexpr
#include <stdio.h>
template <size_t N>
struct PrimeTable {
constexpr PrimeTable() : sieve() {
sieve[0] = sieve[1] = false;
for (size_t i = 2; i < N; i++) sieve[i] = true;
for (size_t i = 2; i < N; i++) {
if (sieve[i])
for (size_t j = i*i; j < N; j += i) sieve[j] = false;
}
}
bool sieve[N];
};
int main() {
constexpr auto table = PrimeTable<100000>();
for (int i = 0; i < 20; i++) {
printf("isPrime(%d): %d\n", i, table.sieve[i]);
}
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment