我正在构建一个素数生成器(我知道,另一个,可能不是一个非常好的生成器,但这是另一个问题。)我使用字典为我的素数集合而忽略复合材料除以以前的素数。然而,它似乎在函数的最后阶段没有正确迭代,我得到了许多不正确的结果。 isWhole
是对另一个函数的自解释调用。这是我的代码,其中x
=要生成的素数:
def prime_generator(x):
count = 2
counter = 2
p = {1: 2}
while len(p) <= x:
if count % 2 == 0:
count += 1
continue
test1 = (math.sqrt(count))
if isWhole(test1) == True:
count += 1
continue
for k, a in p.items():
if count % a == 0:
break
else:
p[ counter ] = count
counter += 1
break
count += 1
return p
答案 0 :(得分:2)
您的设计意图并不完全清楚,但您可能打算将else
子句应用于for
循环而不是if
语句。尝试取消缩进整个else
子句,以便只有在循环终止而没有点击break
时才会运行。