有一个初学python的群友,发问如何用python求1000以内的完全数;
关于完全数:
如果一个数恰好等于它的因子之和,则称该数为“完全数”。
这里的因子即因数(约数)区别与质因子;
比如6的因子:1,2,3;
比如12的因子:1,2,3,4,6;
第一个完全数是6,第二个完全数是28,第三个完全数是496;
6=1+2+3;
28=1+2+4+7+14
… …
本博客:通过简单的问题,增加访问量;
仅此而已;
# -*- coding: UTF-8 -*- # 如果一个数恰好等于它的真因子之和,则称该数为“完全数”。 # 这里的真因子即因数(约数)区别与质因子; # 第一个完全数是6,第二个完全数是28,第三个完全数是496 # 6=1+2+3; # 28=1+2+4+7+14 def wanquanshu(num): re = False start_num=num temp_list = [] for i in range(1,num//2+1): if 0==num%i: temp_list.append(i) if sum(temp_list)==start_num: re = True return re if __name__=="__main__": for i in range(2,1001): if wanquanshu(i): print("完全数:{0}".format(i))
运行如下: