如果一个数恰好等于它的因子之和,那这个数就是完全数,比如第一个数是6,它的约数有1,2,3,6,除去6本身外6=1+2+3,第二个完全数是28=1+2+4+7+14,那么问题来了:求出1000以内完全数。
分析过程:首先,要求出一个数字n的所有因子,即对1-n分别取余,余数为0即可;其次,再将这个数的所有因子(除了n本身)求和,如果等于n, 那么n就是完全数(perfect number)。
# -*- coding:utf-8 -*- # coding=utf-8 # coding:utf-8 # 方法1: a = range(1,1000) b = range(1,1000) perfectnum = [] for i in a: temp = [] for j in b: if j < i: if i%j==0: temp.append(j) else: continue else: break count = 0 for m in temp: count = count + m if count ==i: perfectnum.append(i) else: continue print(perfectnum)
# 方法二: for aa in range(1,1000): sum = 0 for o in range(1,aa): if aa%o == 0: sum += o if sum == aa: print(aa)