有没有更好的方法来查找素数以提高旧方法的效率?

问题描述 投票:0回答:1

为什么在素数问题中,其他程序员将该数字除以 2,并且数字逐渐增加到该数字?也可以将该数字除以 2,3,5,7 并检查该数字是否是素数?是不是有什么缺陷?

def check_prime(number):
  if number == 1:
    return None
  elif number == 2 or number == 3 or number == 5 or number == 7:
    return number
  elif number % 2 == 0 or number % 3 == 0 or number % 5 == 0 or number % 7 == 0:
    return None
  else:
    return number

def number_list(numbers):
  for number in numbers:
    check_prime(number)

number_list([1, 2, 3, 4, 5, 6, 7, 8, 9])
python math numbers primes dsa
1个回答
0
投票

您可以使用筛子:

def get_sieve(n):
    if n < 3:
        return

    primes = [True] * (n + 1)
    primes[0] = primes[1] = False

    for i in range(2, int(n ** 0.5) + 1):
        if primes[i]:
            for j in range(i * i, n + 1, i):
                primes[j] = False

    res = [i for i in range(n + 1) if primes[i]]
    return res[-10:]


print(get_sieve(10 ** 7))

© www.soinside.com 2019 - 2024. All rights reserved.