import numpy as np
numbers = np.arange(1,100) # 假设求1-100
length = len(numbers) # 求数组长度,其实也是求最后一个数
n_max = int(np.sqrt(length)) # 对长度开根号,减少遍历长度
is_prime = np.ones(length,dtype = bool) # 建立一个和数字数组等长的逻辑数组
is_prime[0] = False # 逻辑数组第一个值为False 遍历的时候排除1
for i in range(2,n_max): # 从2开始遍历
if i in numbers[is_prime]: # 判断这个i在不在素数数组里面
is_prime[(i**2-1)::i] = False # 如果在,则从i**2-1 开始以i为步长取得的数肯定不是素数
print(numbers[is_prime])