Fastest-in term of space- way to find prime numbers with python

后端 未结 4 1499
温柔的废话
温柔的废话 2020-11-30 13:21

Maybe it is a stupid question, but i was wondering if you could provide the shortest source to find prime numbers with Python. I was also wondering how to find prime numbers

4条回答
  •  有刺的猬
    2020-11-30 13:56

    The Sieve of Eratosthenes in two lines.

    primes = set(range(2,1000000))
    for n in [2]+range(3,1000000/2,2): primes -= set(range(2*n,1000000,n))
    

    Edit: I've realized that the above is not a true Sieve of Eratosthenes because it filters on the set of odd numbers rather than the set of primes, making it unnecessarily slow. I've fixed that in the following version, and also included a number of common optimizations as pointed out in the comments.

    primes = set([2] + range(3, 1000000, 2))
    for n in range(3, int(1000000**0.5)+1, 2): primes -= set(range(n*n,1000000,2*n) if n in primes else [])
    

    The first version is still shorter and does generate the proper result, even if it takes longer.

提交回复
热议问题