Problem 9
A Pythagorean triplet is a set of three natural numbers, [tex:$a
訳
[Haskell]
{- Project Euler Problem 9 e9.hs -} line:: Int -> [(Int,Int)] line k = [(i,k-i) | i<-[0..k], i*k == 500, i>k-i ] lattice::[(Int,Int)] lattice = concat [line k | k<-[1..500] ] ans= head [ (m^2-n^2)*(2*m*n)*(m^2+n^2) | (m,n)<- lattice ]
ピタゴラス数の一般式に「和が1000」という条件を入れるだけですが,パラメータm,nにいれる値を細工しています.結果,「和が1000」という条件はlineの1*k==500にまで変形されます.さらに,m>nの条件もiとkの条件にしています.直線上の格子点をまとめる際にも500まで集めれば十分です.
結果は
*Main> :l e9.hs [1 of 1] Compiling Main ( e9.hs, interpreted ) Ok, modules loaded: Main. *Main> ans 31875000 *Main>
です.