Нахождение оптимального размера столбца и строки для таблицы с n элементами и заданным диапазоном для ее пропорции

Я ищу оптимальный способ создания таблицы из n элементов, чтобы в идеале не было пустых ячеек, но в то же время пропорция столбцов / строк измерений таблицы становилась как можно ближе к 1.

Конечно, если n - квадратное число, это легко с тех пор

cols = rows = sqrt( n );

Если n - простое число, также ясно, что будут пустые ячейки, поэтому мой текущий способ справиться с этим:

rows = floor( sqrt(n) );
cols = ceil( n / rows  );

Для всех остальных случаев мой план состоит в том, чтобы получить простые множители n, а затем найти все возможные перестановки для тех, чья комбинация имеет пропорции, близкие к 1.

Итак, мой вопрос: есть ли лучший способ сделать это? Или, по крайней мере, есть способ не проверять каждую возможную комбинацию основных факторов?

Ответы на вопрос(2)

Ваш ответ на вопрос