def prime_eratosthenes(n):
prime_list = []
#默认True
bool_list = [True] * (n + 1)
#不是质数为False
for i in range(2, n + 1):
if bool_list[i]:
for j in range(i * i, n + 1, i):
bool_list[j] = False
#取出质数的索引
for i in range(2, n + 1):
if bool_list[i]:
prime_list.append(i)
return prime_list
print(prime_eratosthenes(1000))
100万数字运行时间248ms,效率还不错