Simple prime number generator in Python

前端 未结 26 2123
感情败类
感情败类 2020-11-22 07:16

Could someone please tell me what I\'m doing wrong with this code? It is just printing \'count\' anyway. I just want a very simple prime generator (nothing fancy).

26条回答
  •  自闭症患者
    2020-11-22 08:12

    Here is a numpy version of Sieve of Eratosthenes having both okay complexity (lower than sorting an array of length n) and vectorization.

    import numpy as np 
    def generate_primes(n):
        is_prime = np.ones(n+1,dtype=bool)
        is_prime[0:2] = False
        for i in range(int(n**0.5)+1):
            if is_prime[i]:
                is_prime[i*2::i]=False
        return np.where(is_prime)[0]
    

    Timings:

    import time    
    for i in range(2,10):
        timer =time.time()
        generate_primes(10**i)
        print('n = 10^',i,' time =', round(time.time()-timer,6))
    
    >> n = 10^ 2  time = 5.6e-05
    >> n = 10^ 3  time = 6.4e-05
    >> n = 10^ 4  time = 0.000114
    >> n = 10^ 5  time = 0.000593
    >> n = 10^ 6  time = 0.00467
    >> n = 10^ 7  time = 0.177758
    >> n = 10^ 8  time = 1.701312
    >> n = 10^ 9  time = 19.322478
    

提交回复
热议问题