Generalnie nie da się.
Jak będzie liczba np 97 to nić a nić z tym nie zrobisz bo jest to liczba pierwsza więc nie da się jej przedstawić jako iloczyn dwóch liczb liczba wierszy * liczba kolumn.
nikt nie powiedział że to ma być liczba wierszy * liczba kolumn
dla 97 obrazków jeden może być 4 razy większy od pozostałych - wtedy mamy 3 dodatkowe miejsca zajęte czyli w sumie 100, czyli np 10x10 z czego jeden zajmuje 4 "sektory"
mój algo na szybko wymyślony (więc pewnie błędny)
szukamy takich liczb gdzie:
kolumny * wiersze = n + 3k
przy czym z rozmiarów okna i aspect ratio wyliczysz sobie ratio kolumn do wierszy czyli np:
ratio * wiersze^2 = n + 3k
powiedzmy że ratio będzie 4/3
4/3 * wiersze^2 = n + 3k
wiersze^2 = (n + 3k) * 3/4
wiersze = sqrt(3/4n + 9k/4)
n
to Twoja liczba zdjęć
k
zwiększasz od zera aż liczba wierszy będzie liczbą naturalną
przykładowo dla n = 69 dopiero przy k = 13 wychodzi równa liczba
wtedy
wiersze = sqrt(3/4 * 69 + 9 * 13 / 4)
wiersze = sqrt(51,75 + 29,25)
z tego mamy:
wiersze = 9
kolumny = 12
k = 13 <- czyli 13 zdjęć powiększamy dwukrotnie
5 powiększonych dwukrotnie można zamienić na 1 powiększony czterokrotnie i 4 niepowiększone
(5 * 22) = (1 * 42) + 4
więc można zamiast powiększać 13 zdjęć - powiększyć 2 czterokrotnie i 3 dwukrotnie
ale nie przemyślałem tego - pewnie zdarzą się sytuacje w których jednak podział będzie niemożliwy przy danych ratio