欢迎光临散文网 会员登陆 & 注册

Python编程算法【二十四】 完数

2022-11-08 21:46 作者:SPC编程爱好者  | 我要投稿

【案例内容】 

如果一个数恰好等于他的因子之和,这个数就称为“完数”。例如,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代码】

1000以内的完数有3个

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

Python编程算法【二十四】 完数的评论 (共 条)

分享到微博请遵守国家法律