我试图得到一系列从 1 到 n 的素数。我没有使用范围和 for 循环,而是尝试使用迭代器协议来实现它。到目前为止,我有以下内容,但正如您将看到的,它并没有达到我的预期。
class Prime:
def __init__(self, n):
self.n = n
self.current = 1
def __iter__(self):
return self
def __next__(self):
x = self.current
self.current += 1
for num in range(self.current, self.n):
if num > 1:
for i in range(2, num):
if num % i == 0:
break
else:
return num
d = Prime(20)
c = iter(d)
print(next(c))
print(next(c))
print(next(c))
print(next(c))
print(next(c))
print(next(c))
它打印 2,3,5,5,7,7 目标是打印 2,3,5,7,11...19
我只是不想回答,如果您也可以解释一下,我将不胜感激。谢谢