victory的博客

长安一片月,万户捣衣声

0%

生成器 | 生成器输出质数

生成器输出小于max_num的质数

通过列表生成式,我们可以直接创建一个列表。但是,受到内存限制,列表容量肯定是有限的。
而且,创建一个包含成百上千完个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前
面几个元素,那后面绝大多数元素占用的空间都白白浪费了。生成器有效的解决了这个问题。

代码:

def factor(max_num):
    # 这是一个函数  用于输出所有小于max_num的质数
    factor_list = []
    n = 2
    while n < max_num:
        find = False
        for f in factor_list:
            # 先看看列表里面有没有能整除它的
            if n % f == 0:
                find = True
                break
        if not find:
            factor_list.append(n)
            yield n

        n += 1

g = factor(10)

for n in g:
    print(n)