数列排序问题
对于自然数列1-n进行重排列,满足以下几个条件
1.前两个数字分别是1,n
2.后面的每个数字都能够整除之前的所有数字之和
输入输出
输入:自然数n输出:满足条件的数列,逗号分隔。没有满足条件的数列时,输出not found
创建数组b,b中的元素为除了1和n的其他元素,对b中的元素每次都与前面2个数进行%操作,如果结果为0,则把此元素加入a数组,并且去除b数组中对应元素,跳出for循环,否则就设置k值,初始为0,如果每次在b中都没有找到对应的元素,就k一直+1,直到所有遍历完都没有,那此时k的值必定为b数组的长度,x=false跳出循环即可。
n=7
b=[]
for i in range(2,n):
b.append(i)
a=[1,n]
s = n + 1
x=True
while x and len(b) > 0:
k = 0
for i in b:
if s%i==0:
a.append(i)
s=s+i
b.remove(i)
break
else:
k=k+1
if k == len(b):
x = False
if len(b)==0:
print(a)
else:
print("not found")
结果(n=7时):
[1, 7, 2, 5, 3, 6, 4]