【发布时间】:2021-05-12 10:56:18
【问题描述】:
所以我编写了一个函数来确定一个数字有多少个因子并列出该数字。但是我的功能没有输出正确的信息。
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
【问题讨论】:
-
您的循环不需要一直到
integer来查找所有因子,而只需到它的平方根math.floor(integer**0.5)。但是你需要稍微改变一下你的算法 -
也是正确的。素数由正好有 2 个分隔符来定义
-
你也在测试
integer / 1,这将永远是真的 -
5其实可以被1和5整除。为什么说答案2是错的呢?
-
它返回了正确的输出。如果您不想将 1 和数字本身作为因子包含在内,请从 2 循环到整数。