Python基础练习-002-求1000以内的完全数

如果一个数恰好等于它的因子之和,那这个数就是完全数,比如第一个数是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)。

 

 1 #  -*- coding:utf-8 -*-
 2 # @Author : 飘飘_emmm
 3 # 方法1:
 4 a = range(1,1000)
 5 b = range(1,1000)
 6 perfectnum = []
 7 for i in a:
 8     temp = []
 9     for j in b:
10         if j < i:
11             if i%j==0:
12                 temp.append(j)
13             else:
14                 continue
15         else:
16             break
17     count = 0
18     for m in temp:
19         count = count + m
20     if count ==i:
21         perfectnum.append(i)
22     else:
23         continue
24 print(perfectnum)
25 
26 # 方法二:
27 for aa in range(1,1000):
28     sum = 0
29     for o in range(1,aa):
30         if aa%o == 0:
31             sum += o
32     if sum == aa:
33         print(aa)

 

posted @ 2018-07-20 16:02  飘飘_emmm  阅读(1984)  评论(0编辑  收藏  举报