language: Python 3 (python-3.2.3)
date: 1120 days 18 hours ago
link:
visibility: public
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
def prime_numbers(limit=1000000):
    '''Prime number generator. Yields the series
    2, 3, 5, 7, 11, 13, 17, 19, 23, 29 ...    
    using Sieve of Eratosthenes.
    '''
    output = [2]
    sub_limit = int(limit**0.5) 
    flags = [False, False] + [True] * (limit - 2)   
    # Step through all the odd numbers
    for i in range(3, limit, 2):       
        if flags[i] is False:
            continue
        output.append(i)
        # Exclude further multiples of the current prime number
        if i <= sub_limit:
            for j in range(i*3, limit, i<<1):
                flags[j] = False
    return output
        
if __name__ == '__main__':
    from time import time
    start = time()
    primes = prime_numbers()
    print(time() - start, "seconds")
#    print('\n'.join(str(p) for p in primes))