Как лучше всего расположить последовательность чисел так, чтобы сумма любых двух соседних чисел была простым числом. Например: 7,6,5,2,1,4,3 — одна такая последовательность чисел от 1 до 7. .
расположить последовательность чисел так, чтобы сумма соседних чисел была простым числом
Ответы (1)
Насколько я понимаю, самый простой способ решить эту проблему — разбить ее на две более четко определенные части:
Сгенерируйте неориентированный граф так, чтобы каждая вершина была числом в этом списке чисел, а каждое ребро связывало пару чисел, которые могут быть соседними. Или, другими словами, генерирует граф, который соединяет любые два числа, у которых есть сумма простых чисел. Это можно сделать довольно просто, перебирая 2 индекса.
Найдите гамильтоновский путь для вышеупомянутого графа. Это та последовательность, которую вы хотите. Это довольно хорошо изученная проблема, и существует ряд алгоритмов. Вам просто нужно выбрать один, и он может быть реализован в программном обеспечении, таком как Mathematica. Это будет даже быстрее, чем O(n^2).
Конечно, вы можете найти несколько способов ускорить первый шаг, если вы знаете немного больше о том, с каким списком чисел вы имеете дело.