sieve_table<NatNumber> execute_sieve() noexcept { sieve_table<NatNumber> table{}; r::for_each(v::stride(v::ints((std::size_t)3u, ct_sqrt(NatNumber)), 2), [&table](auto i) { RANGES_FOR(auto i, mark_sieve_for_number<NatNumber>(i)) table.set(i); });
int main() { constexpr auto x = ct_sqrt(uint64_t(1)<<30); }
constexpr std::size_t ct_sqrt(std::size_t n, std::size_t i = 1) noexcept { return n == i ? n : (i * i < n ? ct_sqrt(n, i + 1) : i); }