blob: c395eedfae90e44f11180b3778085c185e64fd16 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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
|