Нахождение оптимального размера столбца и строки для таблицы с n элементами и заданным диапазоном для ее пропорции
Я ищу оптимальный способ создания таблицы из n элементов, чтобы в идеале не было пустых ячеек, но в то же время пропорция столбцов / строк измерений таблицы становилась как можно ближе к 1.
Конечно, если n - квадратное число, это легко с тех пор
cols = rows = sqrt( n );
Если n - простое число, также ясно, что будут пустые ячейки, поэтому мой текущий способ справиться с этим:
rows = floor( sqrt(n) );
cols = ceil( n / rows );
Для всех остальных случаев мой план состоит в том, чтобы получить простые множители n, а затем найти все возможные перестановки для тех, чья комбинация имеет пропорции, близкие к 1.
Итак, мой вопрос: есть ли лучший способ сделать это? Или, по крайней мере, есть способ не проверять каждую возможную комбинацию основных факторов?