基本上,用户输入任何正数,然后程序应该排列一个列表,该列表包含直到输入数字的所有正数,以便列表中的 2 个连续元素的总和是一个平方数。如果输入的数字不允许进行排序,我只希望程序打印错误。这是到目前为止的代码:
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]
在此先感谢您的任何帮助。
收到一只叮咚
相关分类