质数的生成器功能 [英] Generator function for prime numbers

查看:106
本文介绍了质数的生成器功能的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试编写一个生成器函数,用于按如下方式打印质数

I'm trying to write a generator function for printing prime numbers as follows

 def getPrimes(n):
    prime=True
    i=2
    while(i<n):
        for a in range(2,i):
            if(i%a==0):
                prime=False
                break
        if(prime):    
            yield i

但是我没有得到想要的结果 p = getPrimes(100)应该给我一个生成器函数,该函数将素数从2迭代到100,但是我得到的结果是[2,3].我在做什么错了?

However I'm not getting the desired results p=getPrimes(100) should give me a generator function that will iterate primes from 2 through 100 but the result I'm getting is [2,3]. What am I doing wrong?

推荐答案

您需要将prime重置为True,作为while块中而不是之前的第一条语句.实际上,一旦您击中了一个复合数字,prime就永远不会再为真,因此您再也不会产生任何数字了.

You need to reset prime to True as the first statement inside the while block, not before it. As it is, once you hit a single composite number, prime will never be true again, so you'll never yield any more numbers.

这篇关于质数的生成器功能的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆