From 9fe62946aaf8f42e19856b5e5c3dad8cc9111727 Mon Sep 17 00:00:00 2001 From: Matthew Grove Date: Fri, 11 Mar 2022 14:09:22 +0000 Subject: [PATCH] Add basic Project Euler solutions --- project-euler-haskell/problem1.hs | 10 ++++++++++ project-euler-haskell/problem2.hs | 10 ++++++++++ project-euler-haskell/problem3.hs | 10 ++++++++++ 3 files changed, 30 insertions(+) create mode 100644 project-euler-haskell/problem1.hs create mode 100644 project-euler-haskell/problem2.hs create mode 100644 project-euler-haskell/problem3.hs diff --git a/project-euler-haskell/problem1.hs b/project-euler-haskell/problem1.hs new file mode 100644 index 0000000..c29fc56 --- /dev/null +++ b/project-euler-haskell/problem1.hs @@ -0,0 +1,10 @@ +fn :: Integer -> Integer +fn n | n < 3 = 0 + | n == 3 = 3 + | n `rem` 3 == 0 || n `rem` 5 == 0 = n + fn (n-1) + | otherwise = fn (n-1) +main = do + putStrLn "The sum of the multiples of 3 and 5 from 1 to 1000 is:" + print (fn 1000) + +-- filter (\n -> n \`rem\` 3 == 0) \ No newline at end of file diff --git a/project-euler-haskell/problem2.hs b/project-euler-haskell/problem2.hs new file mode 100644 index 0000000..14111c4 --- /dev/null +++ b/project-euler-haskell/problem2.hs @@ -0,0 +1,10 @@ +fn :: Integer -> Integer -> Integer -> Integer +fn m n max | m == 0 = fn n 1 max + | sum >= max = 0 + | even sum = sum + fn n sum max + | odd sum = fn n sum max + | otherwise = 0 + where sum = m+n +main = do + putStrLn "The sum of the even Fibonacci numbers below 4000 is:" + print (fn 0 0 4000) \ No newline at end of file diff --git a/project-euler-haskell/problem3.hs b/project-euler-haskell/problem3.hs new file mode 100644 index 0000000..4a5cbc5 --- /dev/null +++ b/project-euler-haskell/problem3.hs @@ -0,0 +1,10 @@ +fn :: Integer -> Integer -> Integer +fn n fact | fact == 0 = fn n 2 + | n `rem` fact == 0 = fn div fact + | fact <= 2 && fact <= div = fn n (fact+1) + | fact <= div = fn n (fact+2) + | otherwise = n + where div = n `quot` fact +main = do + putStrLn "The largest prime factor of 600851475143 is:" + print (fn 600851475143 0) \ No newline at end of file