Solved project euler 3
[sandbox] / euler / elixir / 0003-largest-prime-factor.exs
1 defmodule LargestPrimeFactor do
2   def largest_prime_factor(start, n) do
3     if start >= (n / 2) do
4       n
5     else
6       if rem(n, start) == 0 do
7         largest_prime_factor(start, div(n, start))
8       else
9         largest_prime_factor(start + 2, n)
10       end
11     end
12   end
13       
14   def largest_prime_factor(n) do
15     n_next = if rem(n, 2) == 0 do
16       div(n, 2)
17     else
18       n
19     end
20
21     largest_prime_factor(3, n_next)
22   end
23 end
24
25 IO.puts(LargestPrimeFactor.largest_prime_factor(600851475143))