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