38 lines
938 B
Haskell
38 lines
938 B
Haskell
-- The sequence of triangle numbers is generated by adding the natural numbers. So the 7th triangle number would be 1 + 2 + 3 + 4 + 5 + 6 + 7 = 28.
|
|
-- The first ten terms would be:
|
|
--
|
|
-- 1, 3, 6, 10, 15, 21, 28, 36, 45, 55, ...
|
|
--
|
|
-- Let us list the factors of the first seven triangle numbers:
|
|
--
|
|
-- 1: 1
|
|
-- 3: 1,3
|
|
-- 6: 1,2,3,6
|
|
-- 10: 1,2,5,10
|
|
-- 15: 1,3,5,15
|
|
-- 21: 1,3,7,21
|
|
-- 28: 1,2,4,7,14,28
|
|
--
|
|
-- We can see that 28 is the first triangle number to have over five divisors.
|
|
--
|
|
-- What is the value of the first triangle number to have over five hundred divisors?
|
|
|
|
module P012 (p012) where
|
|
|
|
import Data.List (nub)
|
|
import ProjectEuler (countDivisors)
|
|
|
|
triangNumbers :: [Int]
|
|
triangNumbers = scanl1 (+) [1 ..]
|
|
|
|
triang500 :: Int
|
|
triang500 = head [x | x <- triangNumbers, countDivisors x > 500]
|
|
|
|
p012 :: IO ()
|
|
p012 = do
|
|
let result = triang500
|
|
putStrLn $
|
|
"Project Euler, Problem 12\n"
|
|
++ "Answer: "
|
|
++ show result
|