当前位置:网站首页>实例003:完全平方数 一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?

实例003:完全平方数 一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?

2022-07-05 08:16:00 懒笑翻

实例003:完全平方数

题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?

 程序分析:因为168对于指数爆炸来说实在太小了,所以可以直接省略数学分析,用最朴素的方法来获取上限,

n = 0
while (n + 1) ** 2 - n * n <= 168:
    n += 1

print('----n=', n)  # 可以得出范围是在(n+1)**2内

思路是:

最坏的结果是n的平方与(n+1)的平方刚好差168,由于是平方的关系,不可能存在比这更大的间隙。

设这个数是i (i+100)**0.5 (i+100+168)**0.5 则结果都是整数。

至于判断是否是完全平方数,最简单的方法是:平方根的值小数为0即可。

for i in range((n + 1) ** 2):
    if i ** 0.5 == int(i ** 0.5) and (i + 168) ** 0.5 == int((i + 168) ** 0.5):
        print(i - 100)

结合起来就是:

# 最坏的结果就是n的平方与(n+1)的平方刚好差168,不可能存在比这更大的间隙,我们据此先得出n
n = 0
while (n + 1) ** 2 - n * n <= 168:
    n += 1

print('----n=', n)  # 可以得出范围是在(n+1)**2内

for i in range((n + 1) ** 2):
    if i ** 0.5 == int(i ** 0.5) and (i + 168) ** 0.5 == int((i + 168) ** 0.5):
        print(i - 100)
------n= 84
-99
21
261
1581

因此该数可以是:-99 21 61 1581

 

原网站

版权声明
本文为[懒笑翻]所创,转载请带上原文链接,感谢
https://lanxf.blog.csdn.net/article/details/125607516