查找原始的毕达哥拉斯三胞胎

时间:2018-08-31 16:20:35

标签: python pythagorean

让我们解决这个问题:我已经在这里查看了this的答案。但是我的方法是不同的。我利用了cantor配对功能,基本上将三胞胎映射为整数。完整序列如下:

1)迭代(i,j)并将cantor(i,j)添加到数组中,只要gcd(i,j)== 1并且i

2)最小到最大排序

我的基本理解是让我认为这应该返回一组有序的原始毕达哥拉斯三元组,不是吗?

代码如下:

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

和cantor函数:

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]

因此我对订单有疑问。

0 个答案:

没有答案