计算素数的一个方法是埃氏筛法,它的算法理解起来非常简单,参考《廖雪峰的python教程》:
def _odd_iter():
n = 1
while True:
n = n + 2
yield n
def _not_divisible(n):
return lambda x: x % n > 0
def primes():
yield 2
it = _odd_iter() # 初始序列
while True:
n = next(it) # 返回序列的第一个数
yield n
it = filter(_not_divisible(n), it) # 构造新序列
def print_prime(num):
# 打印num以内的素数:
for n in primes():
if n < num:
print(n)
else:
break
if __name__ == '__main__':
n=int(input("please input an integer:"))
print_prime(n)