1#ifndef MERSENNE_PRIMES_H
2#define MERSENNE_PRIMES_H
18std::vector<bool> soe(int64_t n) {
20 std::vector<bool> prime(n + 1,
true);
21 for (int64_t p = 2; p * p <= n; ++p) {
23 for (int64_t i = p * p; i <= n; i += p) {
38std::vector<int64_t> mersenne(int64_t n) {
39 std::vector<bool> prime = helpers::soe(n + 1);
40 std::vector<int64_t> elements;
42 for (
int k = 2; ((1LL << k) - 1) <= n; k++) {
43 int64_t val = (1LL << k) - 1;
44 if (val <= n && prime[val]) {
45 elements.push_back(k);