import Data
.Sequence
as Seq
((|>), empty
, viewl
, ViewL
(..), length, index
, singleton
)
isPrime primes n = let
factors = viewl primes
inner EmptyL = True
inner
(factor :
< others
) = if n `
mod` factor
== 0 then False
else isPrime others n
in inner $ viewl primes
nextPrime primes = let
findPrime n = if isPrime primes n then n else findPrime (n + 1)
in primes
|> (findPrime
$ primes `index`
(Seq
.length primes
- 1) + 1)
results
= foldr (.) id (replicate
10000 nextPrime
) (singleton
2)
result
= results `index`
(Seq
.length results
- 1)
aW1wb3J0IERhdGEuU2VxdWVuY2UgYXMgU2VxICgofD4pLCBlbXB0eSwgdmlld2wsIFZpZXdMICguLiksIGxlbmd0aCwgaW5kZXgsIHNpbmdsZXRvbikKCmlzUHJpbWUgcHJpbWVzIG4gPSBsZXQgCglmYWN0b3JzID0gdmlld2wgcHJpbWVzCglpbm5lciBFbXB0eUwgPSBUcnVlCglpbm5lciAoZmFjdG9yIDo8IG90aGVycykgPSBpZiBuIGBtb2RgIGZhY3RvciA9PSAwIHRoZW4gRmFsc2UgZWxzZSBpc1ByaW1lIG90aGVycyBuCglpbiBpbm5lciAkIHZpZXdsIHByaW1lcwoKbmV4dFByaW1lIHByaW1lcyA9IGxldAoJZmluZFByaW1lIG4gPSBpZiBpc1ByaW1lIHByaW1lcyBuIHRoZW4gbiBlbHNlIGZpbmRQcmltZSAobiArIDEpCglpbiBwcmltZXMgfD4gKGZpbmRQcmltZSAkIHByaW1lcyBgaW5kZXhgIChTZXEubGVuZ3RoIHByaW1lcyAtIDEpICsgMSkKCnJlc3VsdHMgPSBmb2xkciAoLikgaWQgKHJlcGxpY2F0ZSAxMDAwMCBuZXh0UHJpbWUpIChzaW5nbGV0b24gMikKCnJlc3VsdCA9IHJlc3VsdHMgYGluZGV4YCAoU2VxLmxlbmd0aCByZXN1bHRzIC0gMSkKCm1haW4gPSBwdXRTdHIgJCBzaG93IHJlc3VsdAoJCQoJ