試行錯誤は必要ありません。

>>119の三つ目のプログラムをご覧ください。
q[0]=- p[0]-2*p[1]+2*p[2];
q[1]=-2*p[0]- p[1]+2*p[2];
q[2]=-2*p[0]-2*p[1]+3*p[2];
if(q[0]<0){
q[0]=-q[0];
if(q[1]<0){q[1]=-q[1];r=1;}else{r=-1;}
}else{
if(q[1]<0){q[1]=-q[1];r=0;}else{return 0;}
}
return 3*g(q)+r;
と書きました。q[0]の正負、q[1]の正負で、rの値を -1,0,1 と変化させています。
これが将に、長男、次男、三男の見極めなんです。

これは、(-a-2b+2c)^2 + (-2a-b+2c)^2 = (-2a-2b+3c)^2 を利用して新しい
ピタゴラス数を生成させる際、a→-a という置き換えを使ったか、
b→-bを使ったか、両方の符号反転を使ったかに対応します。