素数筛选之欧式筛法:用合数与素数乘法,素数与素数的乘法去筛将来的数,同时当这个数被更小的素数整除,就不必再用这个数去运算,保证每个合数只会被它的最小质因数筛去,因此每个数只会被筛一次。 Python实现欧式筛法的代码如下所示:
# 选出1-n的所有素数
def o_filter(n):
flag = [1] * (n + 1)
prime = []
len = 0
flag[0], flag[1] = 0, 0
for i in range(2,n+1):
if flag[i] == 1:
prime.append(i)
len += 1
for j in range(0, n + 1):
if i*prime[j] <= n:
flag[i*prime[j]] = 0
if i % prime[j] == 0:
break
else:
break
return prime
if __name__ == "__main__":
print(o_filter(100))
标签:prime,筛法,Python,flag,素数,欧式
From: https://blog.51cto.com/u_15944471/6082006