Erlang Min Perimeter Rectangle
-module(min_perimeter_rectangle).
-export([min_perimeter_rectangle/1]).
min_perimeter_rectangle(N) ->
find_min(1, N, 1 bsl 128).
find_min(I, N, Min) when I * I >= N ->
Min;
find_min(I, N, Min) ->
Min1 = case N rem I of
0 -> min(Min, 2 * (I + (N div I)));
_ -> Min
end,
find_min(I + 1, N, Min1).
This searches factor pairs up to the square root and picks the pair with the smallest perimeter.