Обычно пользователь вводит любое положительное число, а затем программа должна упорядочить список, который содержит все положительные числа вплоть до этого введенного числа, так чтобы сумма двух последовательных элементов в списке была квадратным числом.Если введенный номер не позволяет эту сортировку, я просто хочу, чтобы программа напечатала ошибку.Пока это код:
u = int(input("ENTER: "))
l = []
for i in range(1, u + 1):
l.append(i)
o = l
t = []
for elem in l:
for x in o:
p = elem + x
p = math.sqrt(p)
if p%1 == 0:
if x == elem:
break
else:
t.append(x)
t.append(elem)
Если я, например, введу 15, то список t, в конце концов, будет выглядеть так:
[3, 1, 8, 1, 15, 1, 1, 3, 6, 3, 13, 3, 5, 4, 12, 4, 4, 5, 11, 5, 3, 6, 10, 6, 2, 7, 9, 7, 1, 8, 7, 9, 6, 10, 15, 10, 5, 11, 14, 11, 4, 12, 13, 12, 3, 13, 12, 13, 2, 14, 11, 14, 1, 15, 10, 15]
Список содержит всепары, которые теоретически будут работать, я застрял, упорядочив этот список так, чтобы каждое число появлялось один раз и чтобы каждое последующее число следовало за свойством, упомянутым выше.
Итак, список, который я ищу в конце, будет следующим:
[8, 1, 15, 10, 6, 3, 13, 12, 4, 5, 11, 14, 2, 7, 9]
Заранее благодарю за любую помощь.