residues(a_0) = { local(y);

y = 0;

if( ((a_0)^183) % 367 == 1, y++);

if( ((a_0)^179) % 359 == 1, y++);

if( ((a_0)^176) % 353 == 1, y++);

if( ((a_0)^147) % 343 == 1, y++);

if( ((a_0)^65) % 131 == 1, y++);

if( ((a_0)^50) % 101 == 1, y++);

if( ((a_0)^30) % 77 == 1, y++);

if( ((a_0)^5) % 11 == 1, y++);

return(y);

}

roots1(a_0,c) = { local(y);

y = 0;

if( issquare(a_0 - 367*c) == 1, y++);

if( issquare(a_0 - 359*c) == 1, y++);

if( issquare(a_0 - 353*c) == 1, y++);

if( issquare(a_0 - 343*c) == 1, y++);

if( issquare(a_0 - 131*c) == 1, y++);

if( issquare(a_0 - 101*c) == 1, y++);

if( issquare(a_0 - 77*c) == 1, y++);

if( issquare(a_0 - 11*c) == 1, y++);

if( issquare(a_0 + 367*c) == 1, y++);

if( issquare(a_0 + 359*c) == 1, y++);

if( issquare(a_0 + 353*c) == 1, y++);

if( issquare(a_0 + 343*c) == 1, y++);

if( issquare(a_0 + 131*c) == 1, y++);

if( issquare(a_0 + 101*c) == 1, y++);

if( issquare(a_0 + 77*c) == 1, y++);

if( issquare(a_0 + 11*c) == 1, y++);

return(y);

}

roots2(a_0) = { local(y);

y = 0;

for( c = 1,1000,

s = roots1(a_0,c);

if( s > y, y = s);

);

return(y);

}

roots3(a,b) = { local(y);

y = 0;

for( a_0 = a,b,

k = roots(a_0);

if( 6 > k, next);

s = roots2(a_0);

if( s > 5, print(a_0));

);

}