rendered paste bodyminN = 8140000000
maxN = 8149999999
main = mapM print foundPrimes
foundPrimes :: [Integer]
foundPrimes = filter (\n -> all (not . divides n) shortPrimes) [minN..maxN]
shortPrimes :: [Integer]
shortPrimes = takeWhile (\x -> x*x < maxN) primes
primes :: [Integer]
primes = 2 : 3 : primes'
where
1 : p : candidates = [6*k+r | k <- [0..], r <- [1,5]]
primes' = p : filter isPrime candidates
isPrime n = all (not . divides n) $ takeWhile (\p -> p*p <= n) primes'
divides n p = n `mod` p == 0