39 bool is_prime[max_num];
40 std::fill_n(is_prime, max_num,
true);
41 for (primes_colln::size_type i=2; i<std::sqrt(max_num); ++i) {
43 for (primes_colln::size_type j=i*i; j<max_num; j+=i) {
48 primes_colln::size_type num_primes=0;
49 for (primes_colln::size_type i=2; i<max_num; ++i) {
54 assert(num_primes<=max_num);
56 primes.reserve(num_primes);
57 for (primes_colln::size_type i=2; i<max_num; ++i) {
67 template<
class E, E MN>
77 filter_primes()
noexcept(
true) {
79 for (
typename primes_colln::size_type i=2; i<std::sqrt(max_num); ++i) {
81 for (std::size_t j=i*i; j<max_num; j+=i) {
90 static constexpr typename primes_colln::size_type
91 count_primes(std::bitset<max_num>
const &is_prime)
noexcept(
true)
__attribute__((pure)) {
92 typename primes_colln::size_type num_primes=0;
93 for (
typename primes_colln::size_type i=2; i<max_num; ++i) {
104 const std::bitset<
max_num> is_prime(filter_primes());
106 primes.reserve(count_primes(is_prime));
107 for (
typename primes_colln::size_type i=2; i<max_num; ++i) {