1 #题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
代码:
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
运行结果:
[root@HK code_100]# python code_3.py 这个整数是:-99 [root@HK code_100]#
代码解释:
这个题目的代码不多,但是逻辑性较强,做这种题我总结的是先用数学的方式计算出来, 然后用代码的形式表示出数学的计算过程 解题思路是: 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