如何通过iter方法生成素数?

How to generate prime numbers by iter method?

我有以下代码,没有显示错误,但仍然没有输出。 我需要帮助来更正此代码。

class primenumber:
    def __iter__(self,end):
        self._end=end

    def checkprimenumber(self,n):
        for i in range(2,n):
            if n%i==0:
                return false
        return true

    def __iter__(self):
        yield 2
        if self._end>2:
            for n in range(2,self._end):
                if checkprimenumber(n):
                    yield n
def main():
    r=primenumber(150)
    for n in r:
        print (n)

if __name__ == "__main__":main

此代码不太可能执行任何操作,因为它未调用任何方法。

在主调用中添加括号并删除 if -

之前的缩进
if __name__ == "__main__":
    main()

之后,您会在代码中看到一些错误(例如缺少构造函数和在没有 self. 的情况下调用成员方法)

有一些小问题:

class Primenumber(object):
    def __init__(self, end): # Init instead of __iter__ here
        self._end = end

    def checkprimenumber(self,n):
        for i in range(2,n):
            if n%i==0:
                return False
        return True

    def __iter__(self):
        yield 2
        if self._end>2:
            for n in range(2,self._end):
                if self.checkprimenumber(n): # Need to call to self.
                    yield n
def main():
    r=Primenumber(150)
    for n in r:
        print(n)

if __name__ == "__main__":
    main()

除了这 2 个小问题,我没有发现进一步的错误。但通常错误消息会告诉您缺少什么,您应该能够自行修复。 :-)