原题链接:http://www.runoob.com/python/python-exercise-example36.html
题目:求100之内的素数。
之前有类似的题,所以这次遇到觉得很容易了,直接写了一个可以一直求素数下去的代码:
def fun(): k=1 while True: k+=1 n=0 for i in range(2,k): if k%i==0: n=1 break if n==0: print(k)
如果要限定在100之内,改变第一个循环为for,设置range即可。
想起在廖雪峰学的,用filter函数来利用埃氏筛法算素数,觉得挺复杂的。
def fun2(): #构建了一个3开始的奇数序列 n=1 while True: n+=2 yield n def not_divisible(n): return lambda x:x%n!=0 #x就是匿名函数中传入的第一个参数 def primes(): yield 2 l=fun2() while True: n=next(l) #返回的序列 yield n l=filter(not_divisible(n),l) #l是惰性序列,可以直接用在filter
再消化一下……