module NthPrime let isPrime n = let stop = int(sqrt(float(n))) seq { 2..stop } |> Seq.exists (fun x -> n % x = 0) |> not let oddNumbers = Seq.initInfinite (fun i -> i + 2) let oddPrimes = Seq.filter isPrime oddNumbers let safeNthPrime n = if n = 1 then 2 else Seq.last (Seq.take n oddPrimes) let prime nth : int option = if nth = 0 then None else Some(safeNthPrime nth)