import Data.List divisor_count :: Integer -> Int divisor_count n = length [x | x <- [1..n], rem n x == 0] --triangles :: [Integer] --triangles = undefined triag :: [Integer] triag = triag' 1 2 where triag' s i = s:(triag' (s+i) (i+1)) rest60 :: Integer -> Integer rest60 x = rem x 60 atkin :: Int -> [Integer] atkin = undefined prims :: Integer -> [Integer] prims n = eres [2..n] where eres (x:xs) | x*x > n = (x:xs) | otherwise = x:eres (filter (\y -> rem y x /= 0) xs) prim_factors :: Integer -> [Integer] prim_factors 1 = [] prim_factors x = p:prim_factors (quot x p) where p = head $ filter (\y -> rem x y == 0) (prims x) --divisor_count' :: Integer -> Int divisor_count' x = product . map (succ . length) . group $ prim_factors x main = do putStrLn . show $ filter (\x -> divisor_count' x >= 500) triag