目标是"找出从1到n包含多少个数字#n均匀划分n"当给出一个积极的int。这是我到目前为止的代码
def num_divisors(n):
for i in n:
if n >= 1:
answer = i // n
return answer
我目前收到所有测试用例的错误'int' object is not iterable
,此处仅供参考:
Check that num_divisors( 1 ) returns 1
Check that num_divisors( 12 ) returns 6
Check that num_divisors( 100 ) returns 9
Check that num_divisors( 360 ) returns 24.
答案 0 :(得分:0)
for i in range(n):
这会循环遍历从0到n-1
的所有值编辑:
您的代码仍然存在缺陷,并且还有其他错误。你应该有一个累加器来计算除以n
答案 1 :(得分:0)
工作代码如下
def num_divisors(n):
count_d = 0
for i in range(1, n+1):
if n % i == 0:
count_d += 1
return count_d
答案 2 :(得分:0)
这是一个应该做你想做的一行:
sum(n % i == 0 for i in range(1, n + 1))
您的代码问题:
i
n
除以answer
,这将始终为您提供0 答案 3 :(得分:0)
此代码将分割数减少到约。 SQRT(N)。例如,如果100 == 4 x 25,那么也是100 == 25 x 4,所以在测试4后我们不必测试25。
def num_divisors(n):
num = 0
for i in range(1, n + 1):
d, m = divmod(n, i)
if d < i:
break
if m == 0:
# n = d * i
num += 1 if d == i else 2
return num