aboutsummaryrefslogtreecommitdiff
path: root/problem10.erl
blob: 0b2c10f9790b708d9f6466889e09fd5ee40a29db (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
-module(problem10).
-export([solve/0]).

solve() -> gen_list([2,3],2000000).

gen_list(List,Max) ->
	O = gen_next(List),
	if
		O > Max ->
			lists:sum(List);
		true ->
			gen_list(List++[O],Max)
	end.

gen_next(List) ->
	gen_next(List, lists:max(List) + 1).
gen_next(List, Next) ->
	Q = will_divide(Next, List),
	if
		Q ->
			gen_next(List, Next + 1);
		true ->
			Next
	end.

will_divide(_, []) ->
	false;
will_divide(Num, [H|T]) ->
	if
		Num rem H =:= 0 ->
			true;
		true ->
			will_divide(Num, T)
	end.