排列数字序列的最佳方法是什么,使得任意两个相邻数字的总和是素数 例如:7,6,5,2,1,4,3是数字在1到7之间的一个这样的序列。
答案 0 :(得分:3)
据我所知,解决这个问题的最简单方法是将其分为两个部分,这些部分定义更明确:
生成无向图,以便每个顶点都是此数字列表中的数字,每条边链接一对可以相邻的数字。或者换句话说,生成一个连接任何两个具有素数和的数字的图形。这可以通过循环2个索引以非常简单的方式完成。
为上述图表找到Hamiltonian path。这就是你想要的顺序。这有点是一个研究得很好的问题,a number of algorithms存在。您只需选择一个,可能在Mathematica等软件中有一个本机实现。这甚至比O(n ^ 2)更快。
当然,如果您对所处理的数字列表有更多了解,可以找到加快第一步的多种方法。