今天继续~答案都会通过python3测试~
原题链接:http://www.runoob.com/python/python-exercise-example3.html
题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
我的代码:
import math def fun(): for i in range(-100,10000): #i的range范围不够精确,具有偶然性 x=math.sqrt(i+100)%1 y=math.sqrt(i+268)%1 if x==0 and y==0: print(i)
思考:
没有想那么多,其实这道题要从数学的方面思考得多一点,以确定该数的范围:
假设有m和n两个数满足:
i+100 =n^2
i+268=m^2
首先可以确定i的下限:
i+100=n^2>0, i >-100
然后可以确定i的上限:
由上式可得,m^2-n^2 =168
m与n最少得差一个数:|m|>=|n+1|
(n+1)^2-n^2<=168 得出n<=83.5<84
所以i<84^2-100=6956
这样,就可以得到i的循环在range(-100,6956)以内了!
当然如果从数学的方面多去思考能够大大减少运算量,比如从m、n的值入手(如原答案)。