1 #题目:一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编程找出1000以内的所有完数。


代码:


1
2
3
4
5
6
7
8
   2 
   3  for  in  range ( 1 , 1001 ):
   4      =  0
   5      for  in  range ( 1 ,i):
   6          if  i % = =  0 :
   7              + =  j
   8      if  = =  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  in  range ( 1 , 1001 ):             #遍历1到1000所有的数字
   4      =  0                           #将约数的和置0,这个赋值不能在for之外,外层for每循环一次,重置一次
   5      for  in  range ( 1 ,i):            #遍历1到(i-1)之间所有的数字,最后一个数字是出去i本身的之前的数字,约数从这些数字中取
   6          if  i % = =  0 :                #将i和j进行取余操作,取余为0的是i的约数
   7              + =  j                  #将约数j累加,和为s
   8      if  = =  i:                      #如果和与i相等(这个if语句要放在内层for循环之外,否则约数的和会相加的不完全,比如24这个数字,必须要约数全部相加完毕再与i比较相等)
   9          print (i)                    #这个i就是一个完全数,打印这个数字