📅  最后修改于: 2023-12-03 14:57:30.215000             🧑  作者: Mango
给定一个整数 N,找到满足条件 a^2 + b^2 = N 的所有整数对 (a, b)。
我们可以使用两个嵌套循环来遍历所有可能的整数对 (a, b),然后检查它们的平方和是否等于 N。如果相等,则将该整数对添加到结果列表中。
以下是一个使用 Python 实现的例子:
def find_integer_pairs(N):
pairs = []
for a in range(int(N**0.5) + 1): # a 取值范围为 [0, sqrt(N)]
for b in range(int(N**0.5) + 1): # b 取值范围为 [0, sqrt(N)]
if a**2 + b**2 == N:
pairs.append((a, b))
return pairs
在上面的代码中,我们使用 range(int(N**0.5) + 1)
来循环迭代整数 0 到 √N。我们可以将其作为 a
和 b
的候选范围,因为 a 和 b 的平方和不可能超过 N。
另外,我们可以使用列表推导式来简化上述代码:
def find_integer_pairs(N):
return [(a, b) for a in range(int(N**0.5) + 1) for b in range(int(N**0.5) + 1) if a**2 + b**2 == N]
下面是几个使用示例:
>>> find_integer_pairs(5)
[(1, 2), (2, 1)]
>>> find_integer_pairs(13)
[(2, 3), (3, 2)]
>>> find_integer_pairs(25)
[(0, 5), (3, 4), (4, 3), (5, 0)]
>>> find_integer_pairs(30)
[]
上述示例中, find_integer_pairs(5)
返回了 (1, 2) 和 (2, 1) 这两个整数对,它们的平方和为 5。
另外, find_integer_pairs(30)
返回了一个空列表,表示不存在满足条件的整数对。
希望以上内容能对你有所帮助,如有疑问,请随时提问!