0
我很抱歉,如果我没有正确标题,但我无法获得下面的代码执行。 for循环参数似乎至少是问题的一部分。如果我在for循环中将“limit”替换为“num”以产生“对于范围(1,limit)中的j”,循环会执行并提供所需的输出。但是用num而不是限制,我应该能够更精确地控制循环的迭代,但它不会完成但不会出现错误。Python:循环参数
from collections import Counter
limit = int(input('What number do you want to factor?'))
num = limit
factors = []
while num != 1:
for j in range(2, num):
if (num % j == 0):
num = num // j
factors.append(j)
break
factorEnum = Counter(factors)
print(factors)
print(factorEnum)
该代码的目的是产生给定数字的素数分解。例如,对于数字28,素数因子是{2,7},但我正在寻找素数分解,这将是{2,2,7}。此代码是查找一系列数字的最小公倍数的其他脚本的一部分(例如,1 - 40)。这是ProjectEuler的一个问题。
'if(num%j == 0):'when that is not True,you do not'num'' then you run runs forever。假设'num'是2,那么'对于范围(2,num)中的j'不运行,num不会减少并且发生相同的事情。 – tdelaney
添加一些打印件,你会看到它出错的地方。更好的是,在'pdb3'调试器中运行它。 – tdelaney
@tdelaney只有在某些时候'j'的值不等于'num'时,情况才会如此。即使数字是素数,它仍然会循环,直到'j == num'和'num'将被设置为'num'//'j',这将是1.然后break语句退出for循环, 'num'为1的值退出while循环。 ... 我认为。 – KhromRol