One Solution To Euler 12
Nothing special but play haskell for fun.
Priming
is a simple module which can be found at 1
module Main where import Data.List import Primeing (primeFactors) main :: IO () main = print $ p12 500 p12 :: Int -> Int p12 n = head $ filter (factorLimit n) [ smartGaus x | x <- [1..]] smartGaus :: Int -> Int smartGaus n = (1+n)*n `div` 2 {-- | Is factor count under the limit --} factorLimit :: Int -> Int -> Bool factorLimit l n | 2 * sqrtInt n < l = False | otherwise = length (factors n) >= l factors :: Int -> [Int] factors n = concat [ [x, n `div` x] | x <- [1..sqrtInt n], n `mod` x == 0 ] sqrtInt :: Int -> Int sqrtInt = truncate . sqrt . fromIntegral