**Problem 7**

*By listing the first six prime numbers: 2, 3, 5, 7, 11, and 13, we can see that the 6th prime is 13. *

*What is the 10001st prime number? *

**Solution**

(*

By listing the first six prime numbers:

2, 3, 5, 7, 11, and 13, we can see that

the 6th prime is 13.

What is the 10001st prime number?

*)

let primes =

let rec prim n (sofar: list<int>) =

seq { if (sofar |> List.forall (fun i -> n%i <> 0)) then

yield n

yield! prim (n+1) (n :: sofar)

else

yield! prim (n+1) sofar }

prim 2 []

let tenthousandfirst = primes

|> Seq.take 10001

|> Seq.max

printfn "%A" tenthousandfirst

**Discussion**

The primes function was posted on a forum by Don Syme. The use of the infinite sequence is just awesome – again. 20+ years of imperative programming has taken it’s toll so it’s going to take a lot more effort on my part to wrap my mind around this functional stuff. I’ll keep plugging away.

If you have any questions, leave a comment, find me on Twitter (@azzlsoft) or email (rich@azzlsoft.com).