Пока только проверил правильность счёта. Скорость в реальном поиске ещё не проверял, но и так видно, что быстрее чем
она работать не будет.
Код:
? \r dlcw.gp
? dlc()
[14, 17, 13, 24, 4, 7, 10, 19, 9, 20, 23, 5, 15, 11, 22, 25, 2, 16, 21, 1, 12, 3, 6, 8, 18]
X=
(14,17,13,24,4),(7,10,19,9,20),(23,5,15,11,22),(25,2,16,21,1),(12,3,6,8,18),
DN= 4932
PsiX=
[75, 113, 135, 149, 131, 205, 117, 189, 177, 185, 135, 265, 87, 161, 215, 221, 91, 277, 111, 237, 225, 203, 141, 313, 211]
PsiY=
[75, 115, 127, 159, 127, 193, 111, 203, 181, 195, 165, 257, 111, 157, 203, 227, 107, 277, 129, 279, 211, 255, 97, 333, 147]
Phi=
[25, 37, 41, 49, 45, 61, 43, 61, 53, 65, 45, 81, 37, 61, 69, 69, 41, 79, 43, 85, 71, 67, 47, 101, 65]
Dk=
[2500, 700, 232, 176, 60, 83, 32, 28, 10, 9, 1, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
DW= 4932
dDNmin[8,21]= -459
dDNmax[6,18]= 192
3869    4520
? dDN
%46 =
[   0  -69  -92  150   80 -41   60 -169  110  -30 -108  -89   56   13  120  -93  -60  118   30  -93    0   17  176   50  128]
[ -69    0    0   28  -27   0   91    0  168  -82    0   48  174  120  101  -48   39  150  -58    0 -207   64  147  -12  -27]
[ -92    0    0  -39  -60   0   42    0  120  -95    0   40  152   70   56  -64   18   81  -40    0 -324   38   96  -67  -76]
[ 150   28  -39    0  100 -46 -178 -310 -155 -140 -235 -344 -265 -396 -228 -342 -422 -324 -429 -350  -48 -300 -210 -288 -184]
[  80  -27  -60  100    0  41   44 -139   14   52  -68  -23  112 -137  -16  -63  -60   24  -10 -111 -112  -21   96  -16   16]
[ -41    0    0  -46   41   0   87  -24  144  -64    0   24  126  160  169   -8   47  192   94   72  -63  108  191  102   93]
[  60   91   42 -178   44  87    0  -49   20   -6   82  -13    6   25   64   75   16   30 -152   43 -112  105  100    6   24]
[-169    0    0 -310 -139 -24  -49    0    8 -220    0    0   46   40  -11  -96  -17   -4 -102    0 -459  -20  -21 -138 -199]
[ 110  168  120 -155   14 144   20    8    0 -119   72    8   28  -62  -54  -40  -64 -111 -120  -72 -366   -6  -58 -231  -78]
[ -30  -82  -95 -140   52 -64   -6 -220 -119    0 -155  -90  -41 -194  -16   12 -178 -144  -65   -4 -268  -78  -14  -48   60]
[-108    0    0 -235  -68   0   82    0   72 -155    0   40  104  150   96  -32   34  165  -96    0 -180   30   88   17  -76]
[ -89   48   40 -344  -23  24  -13    0    8  -90   40    0   22   96   81    0   15   54  -90   96 -267   56   47    0  -47]
[  56  174  152 -265  112 126    6   46   28  -41  104   22    0   68  100   62    6  -17  -52  150 -280   80   28  -25    8]
[  13  120   70 -396 -137 160   25   40  -62 -194  150   96   68    0  -29   80   61   -2  -32    0 -341   72    5 -108 -193]
[ 120  101   56 -228  -16 169   64  -11  -54  -16   96   81  100  -29    0   81   40   -4   58   17 -256   67   64  -40  -40]
[ -93  -48  -64 -342  -63  -8   75  -96  -40   12  -32    0   62   80   81    0   -5  132 -102    0  -71   44   95   78   13]
[ -60   39   18 -422  -60  47   16  -17  -64 -178   34   15    6   61   40   -5    0   50 -108    3 -264    5   -4  -30 -120]
[ 118  150   81 -324   24 192   30   -4 -111 -144  165   54  -17   -2   -4  132   50    0  -81   36 -144  106   22    0  -88]
[  30  -58  -40 -429  -10  94 -152 -102 -120  -65  -96  -90  -52  -32   58 -102 -108  -81    0  122 -406  -24  -26   -9   26]
[ -93    0    0 -350 -111  72   43    0  -72   -4    0   96  150    0   17    0    3   36  122    0 -423  -20   15  -42  -99]
[   0 -207 -324  -48 -112 -63 -112 -459 -366 -268 -180 -267 -280 -341 -256  -71 -264 -144 -406 -423    0 -149 -120 -132  -80]
[  17   64   38 -300  -21 108  105  -20   -6  -78   30   56   80   72   67   44    5  106  -24  -20 -149    0   29   28  -33]
[ 176  147   96 -210   96 191  100  -21  -58  -14   88   47   28    5   64   95   -4   22  -26   15 -120   29    0   10    0]
[  50  -12  -67 -288  -16 102    6 -138 -231  -48   17    0  -25 -108  -40   78  -30    0   -9  -42 -132   28   10    0  -36]
[ 128  -27  -76 -184   16  93   24 -199  -78   60  -76  -47    8 -193  -40   13 -120  -88   26  -99  -80  -33    0  -36    0]
Если раскоментарить соответсвующую строчку в проверке и поменять местами 8-е и 21-е числа в векторе 

, то после запуска получим число Delacorte именно 3869, как и предсказывает формула 
whitefox. А если поменяем местами 6-е и 18-е числа, то получим число Delacorte 4520.
Вся проверка:
Код:
dlc()=
{
n= 5; N= n^2; x= vector(N); Dmax= 0; Dmin= 10^100;
s= Set(); for(i=1, N, s= setunion(s, [i]));
GCD= matrix(N, N, i, j, gcd(i, j)-1);
DIST= matrix(N, N);
for(a=1, N,
 ia= a\n; ja= a%n; if(ja, ia++, ja= n);
 for(b=1, N,
  ib= b\n; jb= b%n; if(jb, ib++, jb= n);
  if(ib > ia || (ia == ib && jb > ja), DIST[a,b]= (ia - ib)^2 + (ja - jb)^2, DIST[a,b]= 0)
));
 S= s; X= x; i= N;
 while(i, r= random(#S)+1; t= S[r]; S= setminus(S, [t]); X[i]= t; i--);
\\X= [14, 17, 13, 24, 4, 7, 10, 19, 9, 20, 23, 5, 15, 11, 22, 25, 2, 16, 21, 1, 12, 3, 6, 8, 18];
 Do= sum(i=1, N-1, sum(j=i+1, N, GCD[X[i],X[j]]*DIST[i,j]));
 print(X); print();
 print("X=");
 for(i=1, N, if((i%n)==1, print1("(",X[i],","), if((i%n)==0, print1(X[i],"),"), print1(X[i],",")))); print(); print();
 print("DN= ",Do + N^2*(N-1)/6); print();
 PsiX=PsiY=Phi=Dk= vector(N);
 for(k=1, N,
  Xk=Yk=Px=Py=F=Sk= 0;
  for(i=1, N, a= X[i]; if(!(a%k), xa= i\n; ya= i%n; if(ya, xa++, ya= n); Xk+= xa; Yk+= ya; Sk+= xa^2+ya^2));
  for(i=1, N, m= X[i]; if(!(m%k), PsiX[m]+= eulerphi(k)*Xk; PsiY[m]+= eulerphi(k)*Yk; Phi[m]+= eulerphi(k)*(N\k)));
  Dk[k]= (N\k)*Sk-(Xk^2+Yk^2)
 );
 print("PsiX="); print(PsiX); print(); print("PsiY="); print(PsiY); print(); print("Phi="); print(Phi); print();
 print("Dk="); print(Dk); print();
 DW= sum(k=2, N\2, eulerphi(k)*Dk[k]);
 print("DW= ",DW + N^2*(N-1)/6); print();
 dDN= matrix(N, N);
 for(a=1, N,
  xa= a\n; ya= a%n; if(ya, xa++, ya= n);
  for(b=1, N,
   xb= b\n; yb= b%n; if(yb, xb++, yb= n);
   A= (xb^2-xa^2+yb^2-ya^2)*(Phi[X[a]]-Phi[X[b]]);
   B= ((xb-xa)^2+(yb-ya)^2)*(X[a]+X[b]-2*gcd(X[a],X[b]));
   Cx= (xb-xa)*(PsiX[X[a]]-PsiX[X[b]]);
   Cy= (yb-ya)*(PsiY[X[a]]-PsiY[X[b]]);
   d= A-B-2*(Cx+Cy); dDN[a,b]= d;
   if(d<Dmin, Dmin= d; amin= a; bmin= b); if(d>Dmax, Dmax= d; amax= a; bmax= b)
 ));
 print("dDNmin[",amin,",",bmin,"]= ",Dmin);
 print("dDNmax[",amax,",",bmax,"]= ",Dmax);
 print(Dt + N^2*(N-1)/6 + Dmin,"    ",Dt + N^2*(N-1)/6 + Dmax); print();
};
Вижу, что смогу до вхождения в поисковые циклы сделать предварительно вычисленными матрицы 
. И вроде это всё. Остальное придётся на ходу вычислять внутри циклов.