From 6b16d921543a62d880171791d39bcc58560785fa Mon Sep 17 00:00:00 2001 From: Charles Date: Sun, 11 Aug 2019 22:36:40 +0200 Subject: haskell problems 001 -> 006 --- haskell/005-smallest_multiple.hs | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 haskell/005-smallest_multiple.hs (limited to 'haskell/005-smallest_multiple.hs') diff --git a/haskell/005-smallest_multiple.hs b/haskell/005-smallest_multiple.hs new file mode 100644 index 0000000..c395eed --- /dev/null +++ b/haskell/005-smallest_multiple.hs @@ -0,0 +1,23 @@ +-- Smallest multiple + +-- Problem 5 +-- 2520 is the smallest number that can be divided by each of the numbers +-- from 1 to 10 without any remainder. + +-- What is the smallest positive number that is evenly divisible by all of +-- the numbers from 1 to 20? + + +main = do + print (first_divisible 2520 [1..20]) -- takes 16s + +first_divisible :: Int -> [Int] -> Int +first_divisible x divs + | divisible x divs = x + | otherwise = first_divisible (x + 2) divs + +divisible :: Int -> [Int] -> Bool +divisible _ [] = True +divisible x (d:divs) + | x `mod` d /= 0 = False + | otherwise = divisible x divs -- cgit