1 #题目:一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编程找出1000以内的所有完数。
代码:
1
2
3
4
5
6
7
8
|
2 3 for i in range ( 1 , 1001 ):
4 s = 0
5 for j in range ( 1 ,i):
6 if i % j = = 0 :
7 s + = j
8 if s = = i:
9 print (i)
|
运行结果:
1
2
3
4
5
|
[root@HK code_100] # python code_19.py
6 28 496 [root@HK code_100] #
|
代码解释:
1
2
3
4
5
6
7
8
|
2 3 for i in range ( 1 , 1001 ): #遍历1到1000所有的数字
4 s = 0 #将约数的和置0,这个赋值不能在for之外,外层for每循环一次,重置一次
5 for j in range ( 1 ,i): #遍历1到(i-1)之间所有的数字,最后一个数字是出去i本身的之前的数字,约数从这些数字中取
6 if i % j = = 0 : #将i和j进行取余操作,取余为0的是i的约数
7 s + = j #将约数j累加,和为s
8 if s = = i: #如果和与i相等(这个if语句要放在内层for循环之外,否则约数的和会相加的不完全,比如24这个数字,必须要约数全部相加完毕再与i比较相等)
9 print (i) #这个i就是一个完全数,打印这个数字
|
本文转自snc_snc 51CTO博客,原文链接:http://blog.51cto.com/netsyscode/1747580,如需转载请自行联系原作者