为什么在素数问题中,其他程序员将该数字除以 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])
您可以使用筛子:
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))