整角四角形問題
4点角問題は「ラングレーの問題にトドメをさす!」によれば、
- 整角四角形 31,402問題
- 整角三角形 17,659問題
合計49,061問題ある。
この記事では、整角四角形 31,402問題あることを、数値計算により丸め誤差を無視して確認してみる。
整角四角形問題とは
四角形ABCDの ∠ABD = a, ∠CBD = b, ∠ACB = c, ∠ACD = d, ∠ADB = eとすると、 a,b,c,d,eが整数となるものを探す。
a = d とすると円周角の定理より e = c となり、つまらない例ができるので、 a < d の場合を考える。
数値計算による確認
書籍にある通り、e は a,b,c,d に関する三角関数と逆三角関数で表せる。
愚直にa,b,c,dに数値代入する数値計算により31,402問題あることを確認する。
default(realprecision, 100);
S(x) = sin(x / 180 * Pi);
C(x) = cos(x / 180 * Pi);
AT(x) = atan(x) * 180 / Pi;
f(a, b, c, d) = S(b+c+d) * S(a) * S(c);
g(a, b, c, d) = S(b) * S(d-a) + S(b+c+d) * S(a) * C(c);
h(a, b, c, d) = if(g(a, b, c, d)==0, 90, AT(f(a, b, c, d) / g(a, b, c, d)));
cnt = 0;
\\ a<d, a+b+c<180, b+c+d<180
for(a=1, 179, for(b=1, 179-a, for(d=a+1, 179, for(c=1, min(179-a-b, 179-b-d), e=h(a, b, c, d); if(abs(e-round(e))<1e-50;, cnt++)))));
print(cnt);
出力結果は次のようになる。(処理時間は25分ほど)
31402