.
Не пытался чего-то мудрить и оптимизировать, поскольку всё равно перебор небольшой, тем более что с программированием я на Вы. Короче, писал первое, что пришло в голову. Комментировать лень, извините. Скажу только, что в случае
![$m,n<0$ $m,n<0$](https://dxdy-04.korotkov.co.uk/f/3/c/e/3cee1c03422fc412fc199f229fb8416f82.png)
я вообще не пытался что-то придумать и сделал перебор по всем
![$|mn|\le a^2/4$ $|mn|\le a^2/4$](https://dxdy-03.korotkov.co.uk/f/2/5/3/2536c5aebe51ad1f64c2de7d91f5979482.png)
, а в случае
![$m>0>n$ $m>0>n$](https://dxdy-03.korotkov.co.uk/f/2/1/0/2108b126c5713523f86f7d2af052222782.png)
я перешёл к переменным
![$x,y$ $x,y$](https://dxdy-01.korotkov.co.uk/f/0/a/c/0acac2a2d5d05a8394e21a70a71041b482.png)
с помощью
![$m^2-8040n=(m+2x)^2,n^2-8040m=(n-2y)^2$ $m^2-8040n=(m+2x)^2,n^2-8040m=(n-2y)^2$](https://dxdy-02.korotkov.co.uk/f/d/7/1/d71dfdaa0e26c23007415456f4055dbb82.png)
.
Код:
condition(a,m,n)=m*n*(a^2-4*m*n)*issquare(a^2-4*m*n)*(m^2-4*a*n)*issquare(m^2-4*a*n)*(n^2-4*a*m)*issquare(n^2-4*a*m)*(a+m+n)
case2(a)=for(m=1,a/2,for(n=m,a^2/4/m,if(condition(a,-m,-n),print("a=",a,", m=",-m,", n=",-n))))
check(a,x,y)=if((y*(x^2-a*y)%(a^2-x*y)==0)*(x*(y^2-a*x)%(a^2-x*y)==0),{m=y*(x^2-a*y)/(a^2-x*y);n=x*(y^2-a*x)/(a^2-x*y);if((n+2*y<0)*(issquare(a^2-4*m*n)),print("a=",a,", m=",m,", n=",n))})
run31(a,x)=fordiv(a*(a^3-x^3),d,if((a^2+d)%x==0,check(a,x,(a^2+d)/x)))
run32(a,x)=fordiv(a*(a^3-x^3),d,if((a^2-x^3/a<d)*(d<a^2)*((a^2-d)%x==0),check(a,x,(a^2-d)/x)))
case3x(a)=for(x=1,a-1,{run31(a,x);run32(a,x)})
run33(a,y)=fordiv(a*(a^3-y^3),d,if((d<a^2-a*y)*((a^2-d)%y==0),check(a,(a^2-d)/y,y)))
case3y(a)=for(y=1,a-1,run33(a,y))
final(a)=
{
case2(a);
case3x(a);
case3y(a)
}
final(2010)