质数:只可以被两个数整除,1和该数本身;
埃拉托色尼筛选法说明;
(1)先把1删除(现今数学界1既不是质数也不是合数)
(2)读取队列中当前最小的数2,然后把2的倍数删去
(3)读取队列中当前最小的数3,然后把3的倍数删去
(4)读取队列中当前最小的数5,然后把5的倍数删去
(5)读取队列中当前最小的数7,然后把7的倍数删去
(6)如上所述直到需求的范围内所有的数均删除或读取
filter用法说明;
filter(func,iter):只返回iter种经过func计算后返回值为True的值;
代码实现:
def _odd_iter():
n = 1
while True:
n = n + 2
yield n
def primes():
yield 2
it = _odd_iter()
while True:
n = next(it)
yield n
it = filter(lambda x: x % n > 0, it)
def main():
for n in primes():
if n < 100:
print(n)
else:
break
if __name__ == '__main__':
main()
运行结果;
参考:
1.https://www.liaoxuefeng.com/wiki/1016959663602400/1017404530360000