diff options
author | Nathan Lasseter <nathan.je.lasseter@googlemail.com> | 2009-10-04 00:56:56 +0100 |
---|---|---|
committer | Nathan Lasseter <nathan.je.lasseter@googlemail.com> | 2009-10-04 00:56:56 +0100 |
commit | 0248ed34ce3d05228bc5084669c3a27933be0c2e (patch) | |
tree | b9c4990344b0863a2af851b5917c49f3a5f03e6b /problem21.erl | |
parent | 00686037d57eb0a0d5eba6eeb6fcc9692e8b59f6 (diff) |
first commit
Diffstat (limited to 'problem21.erl')
-rw-r--r-- | problem21.erl | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/problem21.erl b/problem21.erl new file mode 100644 index 0000000..1661801 --- /dev/null +++ b/problem21.erl @@ -0,0 +1,26 @@ +-module(problem21). +-export([solve/0]). + +solve() -> + L = test(1, []), + pairs(L, 0). + +test(10000, L) -> + L; +test(A,L) -> + D = [X || X <- lists:seq(1, erlang:trunc(math:sqrt(A))), (A rem X) =:= 0], + E = [A div Y || Y <- D], + F = sets:to_list(sets:from_list((D ++ E) -- [A])), + G = lists:sum(F), + test(A+1, [{A,G}|L]). + +pairs([_], S) -> + S; +pairs([{A,B}|T], S) -> + M = lists:member({B, A}, T), + if + M -> + pairs(T, S+A+B); + true -> + pairs(T, S) + end. |