fork download
  1. module Main where
  2.  
  3. main :: IO ()
  4. main = readLn >>= putStrLn . solve
  5.  
  6. solve :: Int -> String
  7. solve n | isnotPrime n = "YES"
  8. | otherwise = "NO"
  9.  
  10. isnotPrime :: Int -> Bool
  11. isnotPrime = (>=3) . length . primes
  12.  
  13. primes :: Int -> [Int]
  14. primes n = go n 2
  15.  
  16. go :: Int -> Int -> [Int]
  17. go x i | i * i > x = [x]
  18. | x `mod` i == 0 = i : go (x `div` i) i
  19. | otherwise = go x $ succ i
Success #stdin #stdout 0.01s 5308KB
stdin
16777216
stdout
YES