Python求完全平方数

这行代码从验证a,b的类型是不是整数,到直接暴力解是否a的平方等于x+100,b的平方是否等于x+268,最后到两平方数相减是否等于168,都不对,有谁还有新的解答吗

img

img

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没有找到!')


  • 代码运行效果截屏图片

    img

答案:21