From 20a89cc87090a2dab9c7ea1e50cfb9e24943103f Mon Sep 17 00:00:00 2001 From: Dan Ballard Date: Fri, 21 Oct 2011 12:49:42 -0700 Subject: [PATCH] added prolog e3 --- e3/e3.pl | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 e3/e3.pl diff --git a/e3/e3.pl b/e3/e3.pl new file mode 100644 index 0000000..768d8c0 --- /dev/null +++ b/e3/e3.pl @@ -0,0 +1,13 @@ +append([],[],[]). +append([],[H|T], [H|Acc]) :- append([], T, Acc). +append([H|T], L, [H|Acc]) :- append(T, L, Acc). + +factor(N, Divisor, [N]) :- N is 1; Divisor >= N - 1. +factor(N, Divisor, Res) :- 0 is N rem Divisor, N1 is N/Divisor, factor(N1, 2, N1F), factor(Divisor, 2, DF), append(N1F, DF, Res). +factor(N, Divisor, Res) :- N rem Divisor > 0, D2 is Divisor + 1, factor(N, D2, Res). + +max([], TMax, TMax). +max([H|T], TMax, M) :- H > TMax, max(T, H, M). +max([H|T], TMax, M) :- max(T, TMax, M). + +e3(Highest) :- factor(600851475143, 2, Factors), max(Factors, 0, Highest).