aboutsummaryrefslogtreecommitdiff
path: root/problem21.erl
diff options
context:
space:
mode:
Diffstat (limited to 'problem21.erl')
-rw-r--r--problem21.erl26
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.