diff options
Diffstat (limited to 'haskell/005-smallest_multiple.hs')
| -rw-r--r-- | haskell/005-smallest_multiple.hs | 23 |
1 files changed, 23 insertions, 0 deletions
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 |
