isPrime x = isPrime' primes x
  where isPrime' _ 1 = False
        isPrime' (p:ps) x
          | p * p > x      = True
          | x `rem` p == 0 = False
          | otherwise      = isPrime' ps x
isPrime x = isPrime' primes x
  where isPrime' _ 1 = False
        isPrime' (p:ps) x
          | p * p > x      = True
          | x `rem` p == 0 = False
          | otherwise      = isPrime' ps x
isPrime x = isPrime' primes x
  where isPrime' _ 1 = False
        isPrime' (p:ps) x
          | p * p > x      = True
          | x `rem` p == 0 = False
          | otherwise      = isPrime' ps x