python编码小模块
问题描述
如何快速获得 n 以内的所有质数
解决方案:
提示:遍历 [ True ] * (n+1) , 若非质数则变 False, 遍历结束后再输
from math import sqrt
def sieve_of_primes_up_to(n):
sieve = [True] * (n + 1)
for p in range(2, round(sqrt(n)) + 1):
if sieve[p]:
for i in range(p * p, n + 1, p):
sieve[i] = False
return sieve
def to_prime_numbers(n):
sieve = sieve_of_primes_up_to(n)
i = 0
for each in sieve:
if (each):
print(i, end = " ")
i+=1
# print(sieve_of_primes_up_to(8))
to_prime_numbers(8)
输出:
0 1 2 3 5 7



