【发布时间】:2021-06-20 04:38:34
【问题描述】:
很抱歉这个可怕的标题 - 我是 python 新手,我不知道如何描述我的问题。所以问题是:
x 加 100 是一个完全平方数,再加上另一个 168 也是一个完全平方数。找到 x。
这是我的答案:
from math import sqrt
for x in range(-100,10000):
a=int(sqrt(x+100))
b=int(sqrt(x+100+168))
if (a*a!=x+100) or (b*b!=x+100+168):
continue
else:
print(x)
问题是,我实际上不知道范围。我只知道这个数字不能小于-100,但10000只是我放在那里的一个随机大数。有没有办法让我先找出一个更小的范围?或者我可以加快速度的方法?
【问题讨论】:
-
范围的上限绝对不会影响找到第一个解决方案所需的时间。为了加快这个过程,考虑迭代平方数,而不是所有数字——它们的数量要少得多!将每个平方数
S添加到集合中,查看S-168是否已经在集合中。如果是这样,请将S-268显示为解决方案。 -
为什么要检查从 1 开始到可能无穷大的每个数字?把问题放在头上:遍历每个大于 100 的完美正方形,加上 168,看看这个数字是否是完美正方形。
标签: python python-3.x