Localizando o tamanho ideal de coluna e linha para uma tabela com n elementos e um determinado intervalo para sua proporção

Estou procurando uma maneira ideal de criar uma tabela a partir de n elementos para que, idealmente, não haja células vazias, mas ao mesmo tempo a proporção das dimensões / colunas das tabelas da tabela se torna o mais próximo possível de 1.

Claro que se n é um número quadrado, é fácil desde então

cols = rows = sqrt( n );

Se n é um número primo, também está claro que haverá células vazias, então minha maneira atual de lidar com isso é:

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

Para todos os outros casos, meu plano é obter os fatores primos de n e, em seguida, procurar todas as permutações possíveis para aqueles cuja combinação tenha proporções mais próximas de 1.

Então, minha pergunta é: existe uma maneira melhor de fazer isso? Ou há pelo menos uma maneira de não ter que testar todas as combinações possíveis dos fatores primos?

questionAnswers(2)

yourAnswerToTheQuestion