Найти примитивные пифагорейские тройки
Давайте разберемся с этим: я уже посмотрел этот ответ здесь. Мой подход, однако, отличается. Я использую функцию сопряжения канторов и в основном отображаю триплеты как целые числа. полная последовательность выглядит следующим образом:
1) перебрать (i,j) и добавить кантор (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
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]