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);
                });
Exemplo n.º 2
0
Arquivo: main.cpp Projeto: CCJY/coliru
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);
}