А что если диагонали дадут добавочные простые числа? - тогда в вашем решении будет слишком много простых чисел
Это уже легко решаемые мелочи.
Алгоритм получается приблизительно такой.
1) подсчитываем сумму E=N^2*(N^2-1)/2
2) Ищем две группы с различными простыми числами. Сумма чисел в каждой группе равна E.
3) Упрядочиваем числа в группах в порядке убывания.
4) Первая группа это будут суммы строк. Вторая группа это будет сумма колонок.
5) Заполняем квадрат числами начиная с N^2, N^2-1,.. и так далее. Каждое очередное число ставим в ячейку, где остаточная сумма строки и колонки наибольшая.
6) Начиная с некоторого числа N0 переходим на полный перебор.
Это база для дальнейшего совершенствавания алгоритма.
-- Пн окт 15, 2012 12:42:29 --Усовершенствование алгоритма Вариант №1.
1) подсчитываем сумму E=N^2*(N^2-1)/2
2) Ищем четыре группы с простыми числами. В группах должно быть как можно больше различных простых чисел. Сумма чисел в каждой группе приблизительно равна E.
3) Упрядочиваем числа в группах в порядке убывания.
4) Первая группа это будут суммы строк. Вторая группа это будет сумма колонок. Третья группа сумма прямых диагоналей. Четвертая группа сумм обратных диагоналей.
5) Заполняем квадрат числами начиная с N^2, N^2-1,.. и так далее. Каждое очередное число ставим в ячейку, где остаточная сумма строки, колонки и диагоналей наибольшая.
6) Начиная с некоторого числа N0 переходим на полный перебор. Ищем все решения где 2N линий дают простое число. И подсчитываем минимальную и максимальную сумму.
-- Пн окт 15, 2012 12:46:37 --Усовершенствование алгоритма Вариант №2.
Выделяем в квадрате две зоны A и B. Зону A заполняем большими числами, начная с N^2 и далее. Зону B заполняем маленькими числами, начная с числа 1. Выбираем 2N линий которые не проходят через зону A, но проходят через зону B. В этих линиях будем выставлять сумму равную различным простым числам. Далее алгоритм аналогичный вышеприведенному. Сначала заполняем зону A. Зону B заполняем в последнюю очередь.