Iterate backwards over primes using primesieve_iterator.
Iterate backwards over primes using primesieve_iterator.Note that primesieve_next_prime() runs up to 2x faster and uses only half as much memory as primesieve_prev_prime(). Hence if it is possible to write the same algorithm using either primesieve_prev_prime() or primesieve_next_prime() then it is preferable to use primesieve_next_prime().
#include <inttypes.h>
#include <stdlib.h>
#include <stdio.h>
int main(int argc, char** argv)
{
uint64_t limit = 10000000000ull;
if (argc > 1)
limit = atol(argv[1]);
uint64_t prime;
uint64_t sum = 0;
sum += prime;
printf("Sum of the primes: %" PRIu64 "\n", sum);
if (limit > 10000000000ull)
printf("Warning: sum is likely incorrect due to 64-bit integer overflow!");
return 0;
}
void primesieve_skipto(primesieve_iterator *it, uint64_t start, uint64_t stop_hint)
Reset the primesieve iterator to start.
static uint64_t primesieve_prev_prime(primesieve_iterator *it)
Get the previous prime.
Definition: iterator.h:112
void primesieve_free_iterator(primesieve_iterator *it)
Free all memory.
void primesieve_init(primesieve_iterator *it)
Initialize the primesieve iterator before first using it.
C prime iterator, please refer to iterator.h for more information.
Definition: iterator.h:52