aboutsummaryrefslogtreecommitdiff
path: root/haskell/005-smallest_multiple.hs
diff options
context:
space:
mode:
authorCharles <sircharlesaze@gmail.com>2019-08-11 22:36:40 +0200
committerCharles <sircharlesaze@gmail.com>2019-08-11 22:36:40 +0200
commit6b16d921543a62d880171791d39bcc58560785fa (patch)
treed47f5a23a52612107ddcc280c9bd128be7d1070f /haskell/005-smallest_multiple.hs
parent7b624de8e3e3637a07364f992c1d7e4185e4a872 (diff)
downloadproject_euler-6b16d921543a62d880171791d39bcc58560785fa.tar.gz
project_euler-6b16d921543a62d880171791d39bcc58560785fa.tar.bz2
project_euler-6b16d921543a62d880171791d39bcc58560785fa.zip
haskell problems 001 -> 006
Diffstat (limited to 'haskell/005-smallest_multiple.hs')
-rw-r--r--haskell/005-smallest_multiple.hs23
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