Skip to content

Instantly share code, notes, and snippets.

@foota
Created May 14, 2012 18:49
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save foota/2695645 to your computer and use it in GitHub Desktop.
Save foota/2695645 to your computer and use it in GitHub Desktop.
Prime (template metaprogramming)
#include <iostream>
template<int n, int d = 2, int r = 1, bool is_prime = false>
struct Prime {
Prime() { Prime<n, (d > 2) ? ((d + 2) % 3 ? d + 2 : d + 4) : d + 1, n % d, (n < d * d)>(); }
};
template<int n, int d>
struct Prime<n, d, 0, false> {};
template<int n, int d, int r>
struct Prime<n, d, r, true> {
Prime() { std::cout << n << std::endl; }
};
template<int n>
struct Primes {
Primes() {
Primes<n - 1>();
Prime<n>();
}
};
template<> struct Primes<1> {};
int main()
{
Primes<100>();
return 0;
}
@foota
Copy link
Author

foota commented May 14, 2012

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment