如何得到一个数的所有除数的和,而不包括它


print(func(6)) # Should be 1+2+3=6
print(func(12)) # Should be 1+2+3+4+6=16

我写了一个函数,它只返回一个数字的所有除法器的列表

def func(num):
add=[]
for i in range(1,num-1):
if num%i==0:
add.append(i)
print(add)

你可以这样做:

def func(num):
add = [i for i in range(1, num-1) if num % i == 0]
return sum(add)

此代码给出:

print(func(6))  # Should be 1+2+3=6
print(func(12)) # Should be 1+2+3+4+6=16

返回除数之和:

def sum_divisors(n):
sum = 0
x = 1
while n != 0 and x < n :

if n % x == 0  :
sum += x
else:
sum += 0
x += 1    

return sum
def func(num):
add = []
total_sum = 0
for i in range(1, num - 1):
if num % i == 0:
add.append(str(i))
total_sum += i
return "{}={}".format("+".join(add), total_sum)

所以我不确定这正是你想要的。但是您可以在python中使用sum((获得列表的总和,因此您的函数看起来像这个

def func(num):
add=[]
for i in range(1,num-1):
if num%i==0:
add.append(i)
return sum(add)

这将返回的正确输出

print(func(6)) # Should be 1+2+3=6
print(func(12)) # Should be 1+2+3+4+6=16

它也可以写为一个列表理解,如

def list_func(num):
return sum([i if num%i==0 else 0 for i in range(1, num-1)])