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.