给定一个正数int,找出从1到n包含多少个数#均分n

时间:2016-10-03 17:34:13

标签: python

目标是"找出从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.

4 个答案:

答案 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))

您的代码问题:

  • 尝试迭代int而不是迭代器。
  • i n除以answer,这将始终为您提供0
  • 在每个循环结束时返回{{1}}

答案 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