Project Euler Problem 046
primes :: [Integer] primes = 2:f[3][3,5..] where f (x:xs) ys = ps ++ f(xs++ps) [z|z<-qs,z`rem`x/=0] where (ps,qs) = span (< x*x) ys isPrime :: Integer -> Bool isPrime nn = imp nn primes where imp n (p:ps) = if nBool expressive n = any id [s+p==n |p<-takeWhile (