python3练习100题——036

原题链接: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

再消化一下……

猜你喜欢

转载自www.cnblogs.com/drifter/p/9205834.html