1. 找到正整数N的所有约数之和

摘抄自《数学与女孩 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应该只能算一次,而如果按照书中的公式进行计算,则会被重复计算。

貌似程序求解似乎更简单一点。如果使用公式计算,还需要求取质数,比较麻烦。

你可能感兴趣的:(1. 找到正整数N的所有约数之和)