Python 制造主发电机

Python 制造主发电机,python,Python,这应该是一个主发电机。我试着运行这个,但它没有打印出整数。节目也将立即结束。我不知道它是否在运行 def prime_gen(): start = 1 while start: if start % start == 0: print(start) start += 1 这里有两个主要问题: 您的算法不计算素数-它在启动时无限运行,并在number%number==0时打印一个数字,即始终为真的数字模数。这

这应该是一个主发电机。我试着运行这个,但它没有打印出整数。节目也将立即结束。我不知道它是否在运行

def prime_gen():

    start = 1

    while start:

        if start % start == 0:
            print(start)

            start += 1

这里有两个主要问题:

您的算法不计算素数-它在启动时无限运行,并在number%number==0时打印一个数字,即始终为真的数字模数。这是一个无限循环,从1开始打印数字

你从来不打电话给prime_gen,这就是为什么程序什么都不做。 您已经创建了一个函数,但没有调用它


要获得计算素数的好方法,请查看。

您可以执行以下操作:

def prime_gen(limit):
    current = 2 # 1 is not exactly prime
    primes = []
    while current <= limit:
        isPrime = True
        for p in primes:
            if current % p == 0:
                isPrime = False
                break
        if isPrime:
            primes.append(current)
            print current, ", ",
        current += 1
    return primes

首先什么是素数?除自身外没有除数的数。 最简单的方法是加载该数字,从2开始,检查该数字是否不能除以之前的所有数字,如果是,则得到一个新数字;你可以通过使用收益率而不是回报率使它成为一个发电机

例如:

pg = prime_gen()
next(pg)
2
next(pg)
3
next(pg)
5
next(pg)
7
next(pg)
11

这是python?是的,我忘了说对不起D:确保你设置了正确的标记..好的,下次你没有调用函数时我会这样做。剧透警报使用Ctrl+C结束程序的无休止循环。
pg = prime_gen()
next(pg)
2
next(pg)
3
next(pg)
5
next(pg)
7
next(pg)
11