From b9fa965567297f2c6ae352316e26cfbe43416610 Mon Sep 17 00:00:00 2001 From: Dan Ballard Date: Thu, 20 Oct 2011 18:18:37 -0700 Subject: [PATCH] started challenge 3 with erlang --- e3/e3.erl | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 e3/e3.erl diff --git a/e3/e3.erl b/e3/e3.erl new file mode 100644 index 0000000..12b3bb4 --- /dev/null +++ b/e3/e3.erl @@ -0,0 +1,18 @@ +-module(e3). +-export([e3/0, factor/3]). + +% e3 get largest prime factor + +% returns list of prime factors +factor(N, Factors, Divisor) when N == 1; Divisor >= N-1 -> %io:format("done ~p/~p\n", [N, Divisor]), + [N]++Factors; +factor(N, Factors, Divisor) when N rem Divisor == 0 -> %io:format("match ~p/~p\n", [N, Divisor]), + Factors++factor(Divisor, [], 2) ++ factor(trunc(N/Divisor), [], 2); +factor(N, Factors, Divisor) -> %{io:format("inc ~p/~p\n", [N, Divisor]),}% + factor(N, Factors, Divisor+1). + +max([], Max) -> Max; +max([H|T], Max) when H > Max -> max(T, H); +max([H|T], Max) -> max(T, Max). + +e3() -> max(factor(600851475143, [], 2), 0).