lint_iterator primes (){ YIELDS(lint); YIELD(2); lint n = 3; while( n < max_lint - 2 ){ YIELD(n); n += 2; while( n < max_lint - 2 && ! is_prime_cached(n) ){ n += 2; } } }
static void primes_cached(unsigned long i, unsigned long n) { unsigned long *arr = NULL; /* Array of prime numbers */ unsigned long count = 1; arr = reallocarray(arr, count, sizeof i); arr[count - 1] = 2; i = 3; while (n == 0 || count < n) { if (is_prime_cached(i, arr, count)) { printf("%lu\n", i); arr = reallocarray(arr, ++count, sizeof i); arr[count - 1] = i; } i += 2; } }