Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
字典中的值除法(Python)_Python_Loops_Dictionary - Fatal编程技术网

字典中的值除法(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。直到检查完所有值,您才知道,这只有在循环完成且未点击
中断
时才知道。