Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
35
Task/Amicable-pairs/Erlang/amicable-pairs-1.erl
Normal file
35
Task/Amicable-pairs/Erlang/amicable-pairs-1.erl
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
-module(properdivs).
|
||||
-export([amicable/1,divs/1,sumdivs/1]).
|
||||
|
||||
amicable(Limit) -> amicable(Limit,[],3,2).
|
||||
|
||||
amicable(Limit,List,_Current,Acc) when Acc >= Limit -> List;
|
||||
amicable(Limit,List,Current,Acc) when Current =< Acc/2 ->
|
||||
amicable(Limit,List,Acc,Acc+1);
|
||||
amicable(Limit,List,Current,Acc) ->
|
||||
CS = sumdivs(Current),
|
||||
AS = sumdivs(Acc),
|
||||
if
|
||||
CS == Acc andalso AS == Current andalso Acc =/= Current ->
|
||||
io:format("A: ~w, B: ~w, ~nL: ~w~w~n", [Current,Acc,divs(Current),divs(Acc)]),
|
||||
NL = List ++ [{Current,Acc}],
|
||||
amicable(Limit,NL,Acc+1,Acc+1);
|
||||
true ->
|
||||
amicable(Limit,List,Current-1,Acc) end.
|
||||
|
||||
divs(0) -> [];
|
||||
divs(1) -> [];
|
||||
divs(N) -> lists:sort(divisors(1,N)).
|
||||
|
||||
divisors(1,N) ->
|
||||
[1] ++ divisors(2,N,math:sqrt(N)).
|
||||
|
||||
divisors(K,_N,Q) when K > Q -> [];
|
||||
divisors(K,N,_Q) when N rem K =/= 0 ->
|
||||
[] ++ divisors(K+1,N,math:sqrt(N));
|
||||
divisors(K,N,_Q) when K * K == N ->
|
||||
[K] ++ divisors(K+1,N,math:sqrt(N));
|
||||
divisors(K,N,_Q) ->
|
||||
[K, N div K] ++ divisors(K+1,N,math:sqrt(N)).
|
||||
|
||||
sumdivs(N) -> lists:sum(divs(N)).
|
||||
7
Task/Amicable-pairs/Erlang/amicable-pairs-2.erl
Normal file
7
Task/Amicable-pairs/Erlang/amicable-pairs-2.erl
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
friendly(Limit) ->
|
||||
List = [{X,properdivs:sumdivs(X)} || X <- lists:seq(3,Limit)],
|
||||
Final = [ X ||
|
||||
X <- lists:seq(3,Limit),
|
||||
X == properdivs:sumdivs(proplists:get_value(X,List))
|
||||
andalso X =/= proplists:get_value(X,List)],
|
||||
io:format("L: ~w~n", [Final]).
|
||||
19
Task/Amicable-pairs/Erlang/amicable-pairs-3.erl
Normal file
19
Task/Amicable-pairs/Erlang/amicable-pairs-3.erl
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
friendly(Limit) ->
|
||||
List = [{X,properdivs:sumdivs(X)} || X <- lists:seq(3,Limit)],
|
||||
Final = [ X || X <- lists:seq(3,Limit), X == properdivs:sumdivs(proplists:get_value(X,List))
|
||||
andalso X =/= proplists:get_value(X,List)],
|
||||
findfriendlies(Final,[]).
|
||||
|
||||
|
||||
findfriendlies(List,Acc) when length(List) =< 0 -> Acc;
|
||||
findfriendlies(List,Acc) ->
|
||||
A = lists:nth(1,List),
|
||||
AS = sumdivs(A),
|
||||
B = lists:nth(2,List),
|
||||
BS = sumdivs(B),
|
||||
if
|
||||
AS == B andalso BS == A ->
|
||||
{_,BL} = lists:split(2,List),
|
||||
findfriendlies(BL,Acc++[{A,B}]);
|
||||
true -> false
|
||||
end.
|
||||
Loading…
Add table
Add a link
Reference in a new issue