Python 求一个数的因子之和(不包括该数本身)
编辑代码后,我了解了如何操作:Python 求一个数的因子之和(不包括该数本身),python,Python,编辑代码后,我了解了如何操作: def sum_factors(n): sum = 0 factor = 1 # Return the sum of all factors of n, not including n while n!=0 and factor < n: if n % factor == 0: sum = sum + factor factor = factor + 1 else: factor
def sum_factors(n):
sum = 0
factor = 1
# Return the sum of all factors of n, not including n
while n!=0 and factor < n:
if n % factor == 0:
sum = sum + factor
factor = factor + 1
else:
factor = factor + 1
return sum
我最初的代码无法对这些因素求和,但我不明白为什么:
def sum_divisors(n):
sum = 0
factor = 1
# Return the sum of all divisors of n, not including n
while n % factor == 0 and factor < n:
sum = sum + factor
factor = factor + 1
return sum
你能解释一下为什么我的初始代码不起作用吗?初始代码着重强调条件,而n%因子==0不是结束while循环的必要条件。初始代码着重强调条件,而n%因子==0不是结束while循环的必要条件循环。您的while循环写入
while n % factor == 0 and factor < n:
这意味着,一旦n%因子测试条件为false,代码将中断while循环
让我们以10为例
10%1等于零,10%2等于0。但是10%3不等于0。这意味着一旦因子达到3,我们就可以打破while循环
我们得到的答案是1和2之和,这是不正确的。您的while循环写入
while n % factor == 0 and factor < n:
这意味着,一旦n%因子测试条件为false,代码将中断while循环
让我们以10为例
10%1等于零,10%2等于0。但是10%3不等于0。这意味着一旦因子达到3,我们就可以打破while循环
我们得到的答案是1和2之和,这是不正确的。有时,向Python程序添加一些调试输出会有所帮助: 定义和除数n: 总和=0 系数=1 返回n的所有除数之和,不包括n printfactor={factor} 当n%系数=0且系数
有时,向Python程序添加一些调试输出会有所帮助: 定义和除数n: 总和=0 系数=1 返回n的所有除数之和,不包括n printfactor={factor} 当n%系数=0且系数