Skip to content

Instantly share code, notes, and snippets.

@fredrik-johansson
Created June 17, 2012 17:23
Show Gist options
  • Save fredrik-johansson/2945098 to your computer and use it in GitHub Desktop.
Save fredrik-johansson/2945098 to your computer and use it in GitHub Desktop.
struct
{
mp_limb_t p;
mp_limb_t i;
void * sieve;
}
n_primes_iter_t
static __inline__ void
n_primes_iter_init(n_primes_iter_t iter)
{
iter->p = 2;
iter->i = 0;
iter->sieve = NULL;
}
static __inline__ mp_limb_t
n_primes_iter_next(n_primes_iter_t iter)
{
iter->i++;
if (iter->i < FLINT_MAX_PRIMES)
{
iter->p = flint_primes[iter->i];
}
else
{
/* generate 1M (or whatever) primes at a time */
if (out_of_primes(iter->sieve))
grow(iter->sieve);
iter->p = next_prime(sieve);
}
return iter->p;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment