language: Python (python 2.7.3)
date: 1090 days 6 hours ago
link:
visibility: public
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import numpy
                    
def primes_upto2_gen3(limit):
    """Generate prime numbers less than limit.
    
    Use Sieve of Eratosthenes. Assume limit > 2
    """
    yield 2
    is_prime = numpy.ones(limit, dtype=numpy.bool)
    for n in xrange(3, int(limit**.5)+1, 2):
        if is_prime[n]:
            yield n
            is_prime[n*n::2*n] = False
    for n in xrange(n+2, limit, 2):
        if is_prime[n]:
            yield n