Most efficient code for the first 10000 prime numbers?

前端 未结 30 1405
日久生厌
日久生厌 2020-11-29 19:09

I want to print the first 10000 prime numbers. Can anyone give me the most efficient code for this? Clarifications:

  1. It does not matter if your code is ineffici
30条回答
  •  独厮守ぢ
    2020-11-29 19:25

    def compute_primes(bound):
    """
    Return a list of the prime numbers in range(2, bound)
    Implement the Sieve of Eratosthenes
    https://en.wikipedia.org/wiki/Sieve_of_Eratosthenes
    """
    primeNumber = [True for i in range(bound + 1)]
    start_prime_number = 2
    primes = []
    while start_prime_number * start_prime_number <=bound:
        # If primeNumber[start_prime_number] is not changed, then it is a prime
        if primeNumber[start_prime_number]:
            # Update all multiples of start_prime_number
            for i in range(start_prime_number * start_prime_number, bound + 1, start_prime_number):
                primeNumber[i] = False
        start_prime_number += 1
    
    # Print all prime numbers
    for start_prime_number in range(2, bound + 1):
        if primeNumber[start_prime_number]:
            primes.append(start_prime_number)
    
    return primes
    

    print(len(compute_primes(200)))

    print(len(compute_primes(2000)))

提交回复
热议问题