primesieve 12.17
Loading...
Searching...
No Matches
prev_prime.cpp

Iterate backwards over primes using primesieve::iterator.

Iterate backwards over primes using primesieve::iterator.

#include <primesieve.hpp>
#include <chrono>
#include <cstdlib>
#include <iostream>
int main(int argc, char** argv)
{
uint64_t limit = 10000000000;
if (argc > 1)
limit = std::atoll(argv[1]);
auto t1 = std::chrono::steady_clock::now();
it.jump_to(limit);
uint64_t prime = it.prev_prime();
uint64_t sum = 0;
// Backwards iterate over the primes <= 10^9
for (; prime > 0; prime = it.prev_prime())
sum += prime;
auto t2 = std::chrono::steady_clock::now();
std::chrono::duration<double> seconds = t2 - t1;
std::cout << "Sum of primes <= " << limit << ": " << sum << std::endl;
std::cout << "Seconds: " << seconds.count() << std::endl;
return 0;
}
primesieve C++ API.
primesieve::iterator allows to easily iterate over primes both forwards and backwards.
Definition iterator.hpp:52
uint64_t prev_prime()
Get the previous prime.
Definition iterator.hpp:136
void jump_to(uint64_t start, uint64_t stop_hint=std::numeric_limits< uint64_t >::max()) noexcept
Reset the primesieve iterator to start.