如何修改Python代码,排除自身计算n的非1非自身因数和?
修改方案:排除数字自身作为因数
核心改动很简单,只需要调整循环的遍历范围,把原来包含n的范围改成到n之前结束:
原来的循环是for j in range(2, n + 1):,这里的n + 1会让循环遍历到n本身。把它改成range(2, n),因为Python的range是左闭右开区间,这样就只会遍历2到n-1的数字,自然排除了n自身。
修改后的完整代码:
def OfN(n): print("Factors of ", n, "= ", end="") factor = [] # 调整range的结束值为n,排除自身 for j in range(2, n): if n % j == 0: print(j, end=" ") factor.append(j) sumN = sum(factor) print("\nSum of all factors = " + str(sumN)) return sumN < n
测试n=5的情况,输出如下:
>>> OfN(5) Factors of 5 = Sum of all factors = 0 True
完全符合期望。另外最后一行的return可以简化成return sumN < n,和原来的逻辑一致但更简洁。
内容的提问来源于stack exchange,提问作者metal
相关产品推荐
相关产品推荐

