摘抄自《数学与女孩 1》
问题:
有一个正整数n,如何求出n的所有约数之和?
求解Python代码如下:
复杂度为O(n^1/2)
# Python
def sumOfNsDivisors(N):
if N <= 0:
return 0
else:
sum = 0
for i in range(1, math.floor(math.sqrt(N))):
if N % i == 0:
sum += i
if i != N / i:
sum += N / i
return sum
书中提供的答案:
原书答案原书中给的答案貌似有一点问题,如果N为平方数,如100,10 * 10,按照道理来讲,10应该只能算一次,而如果按照书中的公式进行计算,则会被重复计算。
貌似程序求解似乎更简单一点。如果使用公式计算,还需要求取质数,比较麻烦。
网友评论