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
,如需转载请自行联系原作者