Project Euler – 問題9

ピタゴラスの定理を満たす3つの整数の組とは、a<b<cでa^2+b^2=c^2を満 たすものである。

例えば、3^2+4^2=9+16=25=5^2である。

この条件を満たす3つの数字a,b,cのうちa+b+c=1000が成り立つものがちょうど 一つ存在する。その3つの数の積abcを求めよ。

この問題はプログラムを書かなくても数学的に手で解ける問題かもしれないが、 ここではプログラムで答えを求める。a,b,cに考えられる全ての組み合わせを順 に試していくプログラムを書くと以下のようになる。ただし、実行速度の問題 もあるので自明な部分は計算しない。まずa+b+c=1000なのでc=1000-a-bとあら わせる。aeuler009 = [a * b * (1000 – a – b) | a <- [1..333], b <- [a..((1000 – a) `div` 2)], a ^ 2 + b ^ 2 == (1000 – a – b) ^ 2]