Inscribed circles of triangles with one angle of 60 degrees

Problem 195 – Project Euler

前にやった問題で似たようなものがあった(たしか,トリチェリの三角形だった気がする).

はじめは,外接円だと思っていた.

import Control.Monad (guard)
p195 r = sum $ do
m <- [1..floor u]
d <- [1..min (m-1).floor $ u / fromIntegral m]
guard $ gcd m d == 1
return.floor.((/) u).fromIntegral $ if mod (d+2*m) 3 ==  then m * d
else 3 * m * d
where u = fromIntegral (2*r) * sqrt 3
main = print.p195 $ 1053779

あんま,速くない.

だけど,短かいから,いいか.