0
我已经写了这个简短的函数来计算一个数字作为我的程序的一部分的因素数量,但我注意到它在某些情况下不起作用。为什么我的除数在某些情况下不起作用?
这里是我的代码:
def divisors(n):
number_of_factors = 0
max_test_num = int(math.ceil(math.sqrt(n))+1)
for i in xrange(1,max_test_num):
if n%i ==0:
number_of_factors += 2
if i*i == n:
number_of_factors -= 1
return number_of_factors
现在,如果数量有一对除数它们是互质的,那么返回的结果是2太大。
例如,输入20,则返回8,当正确的答案是6
关于如何解决此问题的任何建议或只是一个更好的方式来做到这一点?
预先感谢
因此,只需删除+1,它将适用于任何情况? – Ali
@ali是的。只是删除它,ceil(n)+1是多余的,因为如果有一个元素被分割,你已经发现它了。 – amit
啊,好吧,原来是一个微不足道的问题,应该已经发现了。谢谢您的帮助! – Ali