From 625ee578b65986331f92b73fb7ae343b61bd2764 Mon Sep 17 00:00:00 2001 From: Correl Roush Date: Fri, 23 Sep 2011 23:56:21 -0400 Subject: [PATCH] Excercise 003 --- e003.erl | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 e003.erl diff --git a/e003.erl b/e003.erl new file mode 100644 index 0000000..e5dd402 --- /dev/null +++ b/e003.erl @@ -0,0 +1,36 @@ +% Find the largest prime factor of a composite number. + +% The prime factors of 13195 are 5, 7, 13 and 29. +% What is the largest prime factor of the number 600851475143 ? + +-module(e003). +-export([ + main/1, + pfactor/1 +]). + +pfactor(N) -> + pfactor_(N, []). +pfactor_(N, F) -> + Next = pfactor_next(N, 2), + if + Next == N -> + [N | F]; + true -> + pfactor_(trunc(N / Next), [Next | F]) + end. + +pfactor_next(N, Factor) -> + if + Factor == N -> + Factor; + N rem Factor == 0 -> + Factor; + true -> + pfactor_next(N, Factor + 1) + end. + + +main(_) -> + io:format("Prime Factors of 13195: ~w~n", [pfactor(13195)]), + io:format("Prime Factors of 600851475143: ~w~n", [pfactor(600851475143)]).