From 84ed7dbc7fb20d2646f6783b4ed91a8e653092eb Mon Sep 17 00:00:00 2001 From: David Kerkeslager Date: Tue, 13 Dec 2016 10:04:45 -0500 Subject: [PATCH] Solved project euler 3 --- ...cci.exs => 0002-sum-of-even-fibonacci.exs} | 0 euler/elixir/0003-largest-prime-factor.exs | 25 +++++++++++++++++++ 2 files changed, 25 insertions(+) rename euler/elixir/{0002-sum-of-fibonacci.exs => 0002-sum-of-even-fibonacci.exs} (100%) create mode 100644 euler/elixir/0003-largest-prime-factor.exs diff --git a/euler/elixir/0002-sum-of-fibonacci.exs b/euler/elixir/0002-sum-of-even-fibonacci.exs similarity index 100% rename from euler/elixir/0002-sum-of-fibonacci.exs rename to euler/elixir/0002-sum-of-even-fibonacci.exs diff --git a/euler/elixir/0003-largest-prime-factor.exs b/euler/elixir/0003-largest-prime-factor.exs new file mode 100644 index 0000000..79e7676 --- /dev/null +++ b/euler/elixir/0003-largest-prime-factor.exs @@ -0,0 +1,25 @@ +defmodule LargestPrimeFactor do + def largest_prime_factor(start, n) do + if start >= (n / 2) do + n + else + if rem(n, start) == 0 do + largest_prime_factor(start, div(n, start)) + else + largest_prime_factor(start + 2, n) + end + end + end + + def largest_prime_factor(n) do + n_next = if rem(n, 2) == 0 do + div(n, 2) + else + n + end + + largest_prime_factor(3, n_next) + end +end + +IO.puts(LargestPrimeFactor.largest_prime_factor(600851475143)) -- 2.20.1