---
title: "Project Euler #7: 10001st Prime"
author: nbloomf
date: 2017-03-12
tags: project-euler, literate-haskell
---
First some boilerplate.
> module ProjectEuler007 where
[Problem 7](https://projecteuler.net/problem=7) from Project Euler:
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?
We already wrote a utility to list the primes for [Problem 3](/posts/2017-03-07-project-euler-solution-3.html):
> isprime :: Integer -> Bool
> isprime n = all (\p -> n`rem`p /= 0) $
> takeWhile (\p -> p^2 <= n) primes
>
> primes :: [Integer]
> primes = 2 : filter isprime [3,5..]
There is no (known, useful) formula for generating the $n$th prime, so I'll just take the 10001th entry of ``primes``.
> pe7' :: Integer -> Integer
> pe7' n = elt_at n primes
> where
> elt_at :: Integer -> [a] -> a
> elt_at n (x:xs) = if n == 1
> then x
> else elt_at (n-1) xs
woo
So the final answer is
> pe7 :: Integer
> pe7 = pe7' 10001
>
> main :: IO ()
> main = putStrLn $ show pe7