这行代码从验证a,b的类型是不是整数,到直接暴力解是否a的平方等于x+100,b的平方是否等于x+268,最后到两平方数相减是否等于168,都不对,有谁还有新的解答吗
a == int(a) and b == int(b):
填空就这么填就可以
21
x = 0
while 1:
a = 100 +x
b = 168 + a
if a ** 0.5 == int(a ** 0.5) and b**0.5 == int(b**0.5):
print(x)
break
x += 1
感觉是你最后一个冒号是中文全角的,修改为英文半角看看
另外你的逻辑似乎不对,应该是
if -0.0001 < a - int(a) < 0.0001 and -0.0001 < b - int(b) < 0.0001:
您对完全平方数的概念有误。完全平方数,即可以开方出整数的数,即是完全平方数。如4,9,100等。
所以只满足能同时让sqrt(x+100)、sqrt(x+100+168)是整数的x就是答案。用for循环比while 效率更高。
据此求得x为21。
#!/sur/bin/nve python
# coding: utf-8
from math import sqrt
for i in range(20090):
if str(sqrt(i+100)).split('.')[1] == '0' and str(sqrt(i+100+168)).split('.')[1] == '0':
print(i)
exit()
print('\n没有找到!')
答案:21