n =100# <=100的素数import numpy as np
a = np.arange(1,101)
n_max =int(np.sqrt(len(a)))
is_prime = np.ones(len(a), dtype=bool)# is_prime 列表默认为True
is_prime[0]=Falsefor i inrange(2, n_max):if i in a[is_prime]:
is_prime[(i **2-1)::i]=False# 如果当前数为素数,那么将其倍数通过布尔索引全部过滤掉else:# 正常跳出循环后执行print(a[is_prime])
Source Code_2
import math
defprime(n):
flag =[1]* n
p =2
flag[0],flag[1]=0,0# 0,1 都不是素数while(p <= math.sqrt(n)):for i inrange(2* p, n, p):
flag[i]=0# p的倍数为合数,因此 flag[i]需要置成0while1:
p +=1if(flag[p]==1):# 该数为质数breakreturn flag
if __name__ =="__main__":
result=prime(10)for index,value inenumerate(result):if value==1:print(range(10)[index])