给定数字的因子之和

时间:2014-06-17 17:59:14

标签: python sum

我已经编写了这个代码来找到一个数字的因素。在思考和尝试之后,我无法得到输出数字的总和。我希望得到这些数字的总和作为输出递归。其中&# 39;我的代码:

def p(n,c):
    s = 0
    if c >= n:
        return n
    if n % c == 0:
        s += c
        print(s,end=',')
    return p(n,c+1)
n = int(input('enter no:'))
c = 1
print(p(n,c))

2 个答案:

答案 0 :(得分:0)

鉴于评论,似乎这可能是你想要的:

sum([n for n in xrange(1,24) if 24 % n == 0])

使它更通用:

def sum_of_factors(x):
  return sum([n for n in xrange(1,x) if x % n == 0])

编辑:这是一个递归版本:

def sum_of_factors(x, y=1):
  if (y >= x):
    return 0
  if (x % y == 0):
    return y + sum_of_factors(x, y + 1)
  return sum_of_factors(x, y + 1)

>>> sum_of_factors(24)
36

答案 1 :(得分:0)

这是您正在寻找的输出吗? 使用全局变量

s = 0 
def p(n,c):
   global s
   if c >= n:
      return n
   if n % c == 0:
      s += c
      print(s,end=',')
   return p(n,c+1) 
n = int(input('enter no:')) 
c = 1 
print(p(n,c))

输出

enter no:1,3,6,10,16,24,36,24