Здесь нужно рассмотреть несколько вопросов. Если вы хотите, чтобы ваша сетка была как можно более квадратной, для многих Ns в ней будут пустые ячейки. Простой пример - N = 10. Вы можете создать для нее сетку 3х4, но в ней будут две пустые ячейки. Сетка 2х5, с другой стороны, не будет иметь пустых ячеек. Некоторые Ns (простые числа) всегда будут иметь пустые ячейки в сетке.
Но если вы просто хотите квадрат и не заботитесь о пустых полях, то обычно да, вы должны взять квадратный корень. Скажите, что ваш номер N. Затем возьмите R = int(sqrt(N))
. Затем выполните целочисленное деление N/R
, возьмите частное и добавьте 1 к нему. Это C
. Сетка RxC
. Обратите внимание, что когда N
является квадратом (например, 100), это особый случай, поэтому не добавляйте 1 к частному.
Пример:
N = 40
R = int(sqrt(N)) = 6
C = int(40 / 6) + 1 = 7
grid is 6x7