Если не нужно полное покрытие прямоугольника, то общий алгоритм такой:
1. Считаем максимальную сторону квадрата = int(sqrt(высота_прямоугольника*ширина_прямоугольника/количество_квадратов)) = 219
2. Берём ширину и высоту, делим нацело на все числа от 1 до количества квадратов. Из полученного списка удаляем все числа, большие максимальной стороны квадрата, удаляем дубликаты и сортируем по убыванию.
(192, 166, 160, 137, 125, 120, 106, 100, 96, 83, 71, 62, 55, 50)
3. Для полученных размеров считаем количество квадратов, умещающихся в прямоугольник = int(высота_прямоугольника/размер_квадрата)*int(ширина_прямоугольника/размер_квадрата). Как только получаем число большее необходимого количества квадратов - останавливаемся.
n(192) = 10
Итого - сетка 5х2 со стороной квадрата 192 пиксела. По вертикали остаются 116 свободных пикселов.