1 #题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
代码:
1
2
3
4
5
6
7
8
9
10
11
12
|
2
i
=
0
3
j
=
0
4
while
(i >
=
0
):
5
m
=
i
*
i
6
while
(j
*
j <
=
m
+
168
):
7
if
((m
+
168
)
=
=
j
*
j):
8
print
(
'这个整数是:%d'
%
(i
-
100
))
9
i
=
-
2
10
break
11
j
+
=
1
12
i
+
=
1
13
|
运行结果:
1
2
3
|
[root@HK code_100]
# python code_3.py
这个整数是:
-
99
[root@HK code_100]
#
|
代码解释:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
这个题目的代码不多,但是逻辑性较强,做这种题我总结的是先用数学的方式计算出来,
然后用代码的形式表示出数学的计算过程
解题思路是:
1
)从i(i
=
0
)开始每个数字都算出它的完全平方数m
2
)(m
+
168
)如果也是一个完全平方数,那么这个数字就是(i
-
100
)
2
i
=
0
3
j
=
0
4
while
(i >
=
0
):
#完全平方数是大于0的,这个条件原则上是一直成立并且执行的
5
m
=
i
*
i
# 从0开始(i=0)计算出i的完全平方数为m
6
while
(j
*
j <
=
m
+
168
):
# while循环,条件为j的完全平方数小于或者等于(m+168),因为j是递增的,完全平方数也是递增,如果j*j > (m_168),再循环下去没有意义
7
if
((m
+
168
)
=
=
j
*
j):
# 在循环中,如果匹配到j*j==(m+168),说明(m+168)是j的完全平方数,那么题目的两个条件就都匹配了
8
print
(
'这个整数是:%d'
%
(i
-
100
)) 打印出这个数字为(i
-
100
)
9
i
=
-
2
# 一旦找到了这个要求的数字,那么就需要跳出整个程序,这里有两层循环,break只能跳出内层的循环,
python中跳出多重循环的方式有很多,这里选取一种条件判断,一旦符合要求之后,改变外层循环的判断参数使之判断为false,
这样即可用
break
跳出内层循环,用这个判断条件跳出外层循环,从而终止程序
10
break
# 跳出内层循环
11
j
+
=
1
#j从0开始,step为1递增,去匹配j*j==(m+168)
12
i
+
=
1
j从
0
开始,step为
1
递增,去获取完全平方数
13
|
本文转自snc_snc 51CTO博客,原文链接:http://blog.51cto.com/netsyscode/1742991,如需转载请自行联系原作者