Python 完全平方数
是梦吧,是你吧! 人气:31 案例
一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
2 分析
由题意我们可以设该数为x ,加100后得到的完全平方数为再加168后得到的完全平方数为。
则:
得:
可以利用的条件:
3 Python实现
(1)方法一:
假设这个数字是:x
条件一:x+100是一个完全平方数
条件二:x+100+168也是一个完全平方数
import math for i in range(-100,2000): if (int(math.sqrt(i+100)))**2 == i+100: if int(math.sqrt(i+268))**2 == i+268: print(i,end=' ')
#================结果================
-99 21 261 1581
Process finished with exit code 0
(2)方法二
其实可以采用逆向思维:我们可以分别假设:
(1)x+100开平方后的数字是:a
(2)x+100+168开平方后后的数字是:b
那么的话就存在如此关系:
1):
2):
for%20i%20in%20range(0,100): %20%20%20%20for%20j%20in%20range(0,100): %20%20%20%20%20%20%20%20if%20i**2%20-%20j**2%20==%20168: %20%20%20%20%20%20%20%20%20%20%20%20print("数字是:{}%20;i%20=%20{}%20;j%20=%20{}".format(j**2%20-%20100,i,j))
#====================结果========================
数字是:-99%20;i%20=%2013%20;j%20=%201
数字是:21%20;i%20=%2017%20;j%20=%2011
数字是:261%20;i%20=%2023%20;j%20=%2019
数字是:1581%20;i%20=%2043%20;j%20=%2041
Process%20finished%20with%20exit%20code%200
4%20C语言实现
#include%20"stdio.h" #include%20"math.h" %20 int%20main(void) { int%20x%20=%20-100; double%20y%20=%200,%20z%20=%200; do%20{ y%20=%20sqrt(x%20+%20100); z%20=%20sqrt(x%20+%20100%20+%20168); if%20(y%20==%20(int)y%20&&%20z%20==%20(int)z) printf("%d\n",%20x); x++; }%20while%20((z%20+%20y)%20>%200%20&&%20(z%20+%20y)%20<=%20168); %20 %20 return%200; }
加载全部内容