Solved project euler 3
[sandbox] / euler / elixir / 0003-largest-prime-factor.exs
diff --git a/euler/elixir/0003-largest-prime-factor.exs b/euler/elixir/0003-largest-prime-factor.exs
new file mode 100644 (file)
index 0000000..79e7676
--- /dev/null
@@ -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))