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