読者です 読者をやめる 読者になる 読者になる

PEをMathematicaで

Project Eulerに挑戦してみよう

Project Euler 39 / 整数の直角三角形

辺の長さが {a,b,c} と整数の3つ組である直角三角形を考え,その周囲の長さを p とする。p = 120のときには3つの解が存在する。

{20,48,52}, {24,45,51}, {30,40,50}

p ≤ 1000 のとき解の数が最大になる p はいくつか?

Problem 39 - Project Euler


ピタゴラス数は問題9でも扱いました。p=120 の例は方程式の整数解として求められます。

各 p に対する解の個数のリストを作って,その最大値を求めます。a, b, c の偶奇に注目すると p が偶数であることがわかるので p=2q として計算していますが,我ながら頭を使わない解法です。

ついでに Histogram[data] で個数の分布を見てみましょう。

f:id:variee:20170320115329p:plain

500個調べたうちの300個は0なんですね。

データの中身も見てみましょう。見やすいように Partition[data, 20] で20個毎に区切りました。

ここから規則性を見いだせれば p の候補を減らせるのですが……


variee.hatenadiary.com