http://projecteuler.net/index.php?section=problems&id=33
yieldを使うと簡単です。
let rec gcd x y = if x % y = 0 then y else gcd y (x % y) let s = seq { for x in 11..99 do if x % 11 <> 0 then for y in x+1..99 do if x / 10 = y % 10 && (x % 10) * y = (y / 10) * x then yield (x, y) else if x % 10 = y / 10 && (x / 10) * y = (y % 10) * x then yield (x, y) } let mul p q = ((fst p) * (fst q), (snd p) * (snd q)) let f = Seq.fold mul (1, 1) s printfn "%d" ((snd f) / (gcd (fst f) (snd f)))