字典中的值除法(Python)
我正在构建一个素数生成器(我知道,另一个,可能不是很好,但这是另一个问题。)我使用字典收集素数,并通过除以前面的素数忽略合成。然而,在函数的最后阶段,它似乎没有正确地迭代,我得到了一些不正确的结果字典中的值除法(Python),python,loops,dictionary,Python,Loops,Dictionary,我正在构建一个素数生成器(我知道,另一个,可能不是很好,但这是另一个问题。)我使用字典收集素数,并通过除以前面的素数忽略合成。然而,在函数的最后阶段,它似乎没有正确地迭代,我得到了一些不正确的结果isfull是对另一个函数的自解释调用。这是我的代码,其中x=要生成的素数: def prime_generator(x): count = 2 counter = 2 p = {1: 2} while len(p) <= x: if count
isfull
是对另一个函数的自解释调用。这是我的代码,其中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
def prime_发生器(x):
计数=2
计数器=2
p={1:2}
虽然len(p)您的设计意图并不完全清楚,但您可能打算将else
子句应用于for
循环,而不是if
语句。尝试取消整个else
子句的缩进,使其仅在循环终止而未命中break
时运行。这似乎有效,但我不明白为什么。如果ttheif语句由于该数字可被字典中以前的某个数字整除而产生true,则它应该中断并忽略else。否则,如果计数不能被任何以前的值整除,则应执行else。count
为素数,如果count%a==0
对于a
的所有值都为假。正如所写的,如果a
的任何值的条件为false,则代码决定它为prime。直到检查完所有值,您才知道,这只有在循环完成且未点击中断
时才知道。