让我们解决这个问题:我已经在这里查看了this的答案。但是我的方法是不同的。我利用了cantor配对功能,基本上将三胞胎映射为整数。完整序列如下:
1)迭代(i,j)并将cantor(i,j)添加到数组中,只要gcd(i,j)== 1并且i 2)最小到最大排序 我的基本理解是让我认为这应该返回一组有序的原始毕达哥拉斯三元组,不是吗? 代码如下: 和cantor函数: 我想念什么吗? 编辑: 使用此附加代码: 输入: 应该返回 ,但是当输入为 因此我对订单有疑问。def go(n):
tmpi = []
for i in range(1,n):
for j in range(n%2 +1,n,2):
if gcd(i,j) == 1:
if (i+j)%2 == 1:
if i < j:
tmpi.append(cantor(i,j))
tmpi.sort()
return tmpi
def cantor(x,y):
return int(0.5*(x+y)*(x+y+1)+y)
def lister(li):
tmp = []
for i in li:
tmp.append(list(retTrp(invCant(i))))
return tmp
def listi2(li):
for i in li:
i.sort()
def sorti(li):
return sorted(li, key=itemgetter(2))
def doall(n):
tmp = lister(go(n))
listi2(tmp)
return sorti(tmp)
doall(100)[99]
[429, 460, 629]
doall(100)[100]