X-Git-Url: https://code.kerkeslager.com/?p=sandbox;a=blobdiff_plain;f=euler%2Felixir%2F0003-largest-prime-factor.exs;fp=euler%2Felixir%2F0003-largest-prime-factor.exs;h=79e767650b36e0845cea7dfd5de1980c0f47105a;hp=0000000000000000000000000000000000000000;hb=84ed7dbc7fb20d2646f6783b4ed91a8e653092eb;hpb=1759f874db778ad1e9ac9c6881879f5a5f1073e0 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))