Sieve of Eratosthenes - Finding Primes Python

前端 未结 17 2510
旧巷少年郎
旧巷少年郎 2020-11-22 04:40

Just to clarify, this is not a homework problem :)

I wanted to find primes for a math application I am building & came across Sieve of Eratosthenes approach.

17条回答
  •  温柔的废话
    2020-11-22 04:55

    Much faster:

    import time
    def get_primes(n):
      m = n+1
      #numbers = [True for i in range(m)]
      numbers = [True] * m #EDIT: faster
      for i in range(2, int(n**0.5 + 1)):
        if numbers[i]:
          for j in range(i*i, m, i):
            numbers[j] = False
      primes = []
      for i in range(2, m):
        if numbers[i]:
          primes.append(i)
      return primes
    
    start = time.time()
    primes = get_primes(10000)
    print(time.time() - start)
    print(get_primes(100))
    

提交回复
热议问题