我最近才通过这个解释它的视频发现了一种生成毕达哥拉斯三元组的方法,涉及使用高斯(复数)整数。到目前为止,我已经设法编写了一个函数,该函数返回由每个高斯整数生成的勾股三元组列表,其中虚部小于实部。
def pyt(max_real):
t = []
real = 2
imag = 1
while real <= max_real:
z = complex(real, imag)**2
t.append((z.real, z.imag, abs(z)))
if imag + 1 == real:
real += 1
imag = 1
else:
imag += 1
return t
这样做的问题是,某些三元组(例如{9, 12, 15})不是通过该函数所基于的视频中的初始步骤生成的,我不确定如何生成这些。
>>> for i in pyt(4):
print(i)
(3.0, 4.0, 5.0)
(8.0, 6.0, 10.0)
(5.0, 12.0, 13.0)
(15.0, 8.0, 17.0)
(12.0, 16.0, 20.0)
(7.0, 24.0, 25.0)
>>> # missing: (9, 12, 15), possibly others
我将如何生成每一个可能的三元组,以某种方式使用我已经拥有的或其他的?