primes = sieve [2..]

sieve (p : xs) = p : sieve [x | x <- xs, (mod x p) > 0]

isCoPrime (psh : pst) n 
   | (psh * psh) > n = True
   | (mod n psh) == 0 = False
   | otherwise = (isCoPrime pst n)

fastPrimes = 2 : [x | x <- [3,5 ..], (isCoPrime fastPrimes x)]