PEをMathematicaで

Project Eulerに挑戦してみよう

Project Euler 94 / 擬正三角形

一辺の長さが整数の正三角形は面積が整数にならないことを示すのは簡単である。しかし, 5-5-6の辺を持つほとんど正三角形に近い擬正三角形 (almost equilateral triangle) は面積が12で整数である。

以降, 二等辺三角形で 3つめの辺の長さが他と1つしか違わないもの (5-5-6, 5-5-4等) を擬正三角形と呼ぶ。

周囲の長さが1,000,000,000以下の面積が整数になる擬正三角形を考え,その周囲の長さの総和を求めよ。

Problem 94 - Project Euler


ヘロンの公式を使いました。3辺の長さが (n, n, n+1), (n, n, n-1) の三角形の面積を f(n), g(n) であらわします。


IntegerQ[f[n]]などで n を抽出してみたら案の定時間がかかりすぎたので,ためしに実例をいくつか求めてみました。


f(n) が整数になるには n が奇数であることが必要です。n が偶数のとき f(2m) のルートの中身はすべて奇数で,ルートが外れたとしても分母の4が消えないからです。

一方,n が奇数のときは n=2m-1 に対して (3m-1)(m-1)=(平方数)ならば条件をみたします。これはペル型方程式で,Reduce[ ] で解けました。

 n=\dfrac{1}{3}\left\{(7+4\sqrt{3})^k+(7-4\sqrt{3})^k+1\right\}\quad (k\geqq 1)

g(n) も同様に処理できます。n=2m-1 に対して (3m-2)m=(平方数)が条件です。

 n=\dfrac{1}{3}\left\{(2-\sqrt{3})(7+4\sqrt{3})^k+(2+\sqrt{3})(7-4\sqrt{3})^k+1\right\}\quad (k\geqq 2)


これらを3倍して1を足し引きしたものの総和を求めて終了。Range を一応1000までとりましたが,条件をみたす三角形は 7+7=14 個しかありませんでした。