Да, попробуйте для начала сформировать все потенциальные массивы из 49 различных простых чисел для построения квадрата с минимальной магической константой
733.
Скажете мне, сколько у вас массивов получилось.
Вот я сейчас программу сделала и кручу её для массива из 59 чисел. Разумеется, если взять массив ровно из 49 чисел, выполнение программы ускорится во много-много раз. Это очевидно. Но сколько будет потенциальных массивов? Тысяча, миллион?
-- Вт авг 27, 2013 10:35:31 --Алгоритм построения обычных магических квадратов из простых чисел подробно описан в
статье.
Это квадрат 7х7 с магической константой 733, в котором сформированы строки, то есть суммы элементов в строках уже правильные. Это первый этап алгоритма.
Код:
3 5 7 23 223 233 239
11 13 17 103 193 197 199
19 29 31 71 181 191 211
37 41 43 97 163 173 179
47 53 59 101 149 157 167
61 67 73 113 131 137 151
79 83 89 107 109 127 139
Кстати, думаю, думаю... Кажется, я догадываюсь о подходе YuriiS, если он всё время талдычит о базе данных.
Этот подход не новый, его, как мне кажется, использовал
12d3 ещё когда мы искали наименьший квадрат 6-го порядка из чисел Смита. Этот квадрат у меня никак не получался по моему алгоритму, хотя алгоритм прекрасно работает для квадратов из простых чисел.
Тогда
12d3 и сделал свою программу. Алгоритм свой он описал очень кратко, но мне кажется, я проникла в его суть. Ну, может, и не проникла
Итак, база данных... Что может быть в этой базе данных? Первое, что приходит в голову: в этой базе данных могут быть
цепочки!
В показанном выше квадрате вы видите 7 таких цепочек. Цепочки - это все возможные наборы по 7 различных чисел, сумма которых равна магической константе квадрата. Все такие цепочки и составляют базу данных для данной магической константы.
Теперь начинаем строить квадрат из этих цепочек.
Положили две цепочки:
Код:
3 5 7 23 223 233 239
11 13 17 103 193 197 199
Теперь проверяем по всей БД, есть ли цепочки, начинающиеся с (3,11), (5,13) и т.д. При этом проверять надо комбинации по всем столбцам и всем диагоналям, в строках не надо проверять, так как мы кладём в строки готовые цепочки.
Если цепочки со всеми комбинациями по два числа в БД имеются, идём дальше: добавляем третью строку:
Код:
3 5 7 23 223 233 239
11 13 17 103 193 197 199
19 29 31 71 181 191 211
Теперь проверяем, есть ли в БД цепочки, начинающиеся с трёх чисел: (3,11,19), (5,13,29) и т.д.
Может, я ошибаюсь и это бредовый метод. Но!
12d3 именно на цепочках основывал своё построение. Это точно.
Может, не совсем так, как я это описала, но где-то очень близко.
P.S. Я много раз пользовалась программой
12d3. Очень хорошо видно, что работа программы начинается именно с нахождения всех цепочек по 6 чисел (программа для квадратов 6-го порядка). На это уходит некоторое время; потом программа выдаёт количество найденных цепочек. Вот! Прямо точно сообщает, сколько найдено цепочек!
И уже после этого начинается поиск квадратов.
В самом начале программа заправшивает ввод магической константы. То есть цепочки она ищет по заданной магической константе.