Алгоритм для просмотра контейнера большего размера на маленьком экране

#algorithm

#алгоритм

Вопрос:

Мне нужен математический алгоритм (или нет), простой (или нет, тоже).

Это выглядит следующим образом: у меня есть два числа a и b, и мне нужно найти меньшее число ближе к b, c. Такое, что «a% c == 0»

Если «a% b == 0», то c == b

Почему это так? Мой экран имеет размер x пикселей. И контейнер имеет пиксели y такие, что y> x .

Я хочу рассчитать, сколько мне нужно прокрутить, чтобы я мог видеть свой контейнер на своем экране, не тратя впустую пространство. Я хочу обязательно перейти к просмотру.

Мне нужно знать, сколько мне нужно свернуть, в соответствии с моим экраном и как часто просматривать весь мой контейнер.

Ответ №1:

Не могли бы вы помочь? (Java-код)

 int a = 2000;
int b = 300;
int c = 0;

for (int i = b; i > 0; i--) {
     if ( (a % i) == 0) {
         c = i;
         break;
     }
}
  

Результат будет на c.

Ответ №2:

Задача требует, учитывая a и b , найти наибольшее c такое, что

  • c <= b
  • c*k = a для некоторых k

Первое ограничение устанавливает нижнюю границу k , а максимизация c эквивалентна минимизации k с учетом второго ограничения.

Нижняя граница для k задается

 a = c*k <= b*k
  

и так k >= a/b . Поэтому мы просто ищем наименьшее k , которое является делителем a , например

 if (b > a) return a; 
for (int k=a/b; k<=a;   k)
    if (a % k == 0) {
        return a/k;
    }
}