所以我写了一个函数来确定一个数有多少个因子,并列出这个数。但是,我的函数没有输出正确的信息
def num_factors(integer):
result = 0
for i in range(1,integer+1):
if integer%i == 0:
result +=1
return result
print(num_factors(5))
print(num_factors(6))
print(num_factors(97))
print(num_factors(105))
print(num_factors(999))
出于某种原因,它正在输出:
2
4
2
8
8
应在何时输出:
0
2
0
6
6
问题是您正在计算除以1和测试整数本身
您需要减去2或跳过
1
和integer
以获得所需的输出:更好的是,我们要意识到,对于每一个作为{}因子的{},我们只需要找到其中一个(即,{}有{}、{}和{}作为因子。计算2次(2x8=16)和4次(4x4=16)),因为其中一个将小于或等于{}的平方根,只需循环到{}的平方根即可
integer
并增加2而不是1,并且只进行一小部分测试(并使结果快1000倍):印刷品:
顺便说一句:事实上,customary是将
1
和整数本身作为因子来计算的。所以所有这些结果应该是+2,而您的原始解实际上是正确的。要使上述解正确,只需从result=2
开始在
for i in range(1,integer+1):
行中,您将遍历1和整数之间的所有数字,包括1和整数,它们当然是因子例如,如果
integer = 5
,则循环1、2、3、4和5。其中1和5当然都是5的因子您可以将该行编辑为
for i in range(2,integer):
以修复错误。生成的代码如下所示:尽管有人在评论中建议,您可以进一步减少搜索空间
sympy提供此函数以查找基本因子
相关问题 更多 >
编程相关推荐