Так фильтровать будет правильно?:
Код:
nno2()=
{
for(k=3, 1000,
if(!issquare(k),
if(k%2, d= k^2-4; f= 4*k, d= (k/2)^2-1; f= k);
if(kronecker(f, d)==1,
N= bnfisnorm(bnfinit('X^2 - d), f);
if(N[2]==1,
n= lift(N[1]);
b= polcoeff(n, 1); q= polcoeff(n, 0);
if(k%2, a= (q + b*k)/2, a= q + b*k/2);
S= factorint(denominator(a)); s= 1;
for(i=1, #S~,
m= S[i,1]; p= polrootsmod('X^2 - f, m); if(!#p, s= 0; break())
);
if(s, print1(k,", "))
\\ if(s, print(k," ",n," ",m," ",b," ",a,"\n"))
)
)
)
)
};
Вывод программы:
Код:
? \r nno2.gp
? nno2()
160, 241, 580, 601, 720, 745, 801, 865, 916,
Но почему-то отсеились
265, 436, 820, которые были кандидатами после численной проверки в Вольфраме.