Python编程算法【二十四】 完数
【案例内容】
如果一个数恰好等于他的因子之和,这个数就称为“完数”。例如,6的因子为1、2、3,且6=1+2+3,因此6就是"完数"。请找出1000以内的所有完数。
【解题思路】
解决本题的第一步,就是找出一个数的所有因子(也叫因数)。假设有一个数num,在找它的因子时,可以用for循环,从1到num,逐一判断是否能被该数整除。但实际上,只要判断从1到 num//2 即可(//表示整除)。举个例子,要找出8的因子,只需判断数字1-4,能否被8整除即可;要找出9的因子,只需判断1-4,能否被9整除即可(9//2=4);利用数学常识,其实只要超过该数的一半,就肯定不能被该数整除。接着第二步,把找到的因子全部存放到一个列表中,因为利用列表的 sum 函数,我们便能快速求得所有因子的总和,最后判断该数与其因子之和是否相等,即可求出该数是否为完数。
【Python代码】

本题在求和的时候,之所以要借助列表,就是想利用列表的 sum 函数来快速求和。当然也可以用累加的方式求和,方法很多,根据个人的习惯选择。感觉用 sum 代码会更简洁一些哈。