Каков твой приоритет? Вы хотите, чтобы разница между высотой, шириной была минимальной или чем-то подобным?
Учитывая количество n изображений. Вы должны взять каждое число от 1 до sqrt (n). Если n можно разделить на i (n% i == 0), делите и увеличивайте мощность массива [i] каждый раз, когда он делится. Если n больше не может быть разделено на i (то есть n% i! = 0), я делю еще раз.
Вы должны получить все делители и их наибольшую силу в заданном числе n.
Составьте их комбинации, и вы получите размеры своего квадрата.