Учитывая положительное целое число объектов, скажем, маленьких ящиков, я хотел бы аккуратно их выложить на столе в хорошем 2d-блоке, который может или не может образовывать прямоугольник, но не старый прямоугольник, такой как близко к квадрату, насколько это возможно. Для этого мне нужны целые числа TWO, которые делят целое число объектов, максимально приближенных друг к другу.Обманчиво просто? Учитывая целое число, найдите SET CLOSEST целых чисел, которые точно делят его?
Например,
Скажем, у меня есть 12 объектов. Я мог заложить их как
(12 х 1) или (1 х 12) или (6 х 2) или (2 х 6) или (3 х 4) или (4 х 3)
Я хочу, чтобы они были как (4 x 3), или даже (3 x 4), но предполагали, что наибольшее значение приходит первым, так как это самая большая пара, которая делит число, которое является самым близким.
Учитывая некоторое положительное целое число x, какой алгоритм вернет (y, z) где;
((у * г) = х) и (у> г) и (абс (у - г) является минимальным)
Когда нет решения, я мог поиск решение путем увеличения целого числа, начиная с количества объектов, которые у меня есть, найти ближайшее решение, а затем подставить мои объекты в это решение, оставив пробелы.
BUT ... Теперь давайте подберем темп!
Что делать, если я расширяю это сейчас на 3d, а не на плоской плоскости, и я хочу сделать хороший аккуратный блок из них, предположим, что кубические объекты в 3d-пространстве имеют CLOSEST THREE чисел, которые делят целое число объектов, максимально приближенных друг к другу, чтобы сформировать самую компактную, плотно упакованную 3d-структуру из этого числа объектов? Например,
Скажем, у меня есть 12 объектов. I может Оформить их как
(12 x 1 x 1) или (1 x 12 x 1) или (1 x 1 x 12) или (2 x 2 x 3) или (2 x 3 x 2) или (3 x 2 x 2) ...
Где я принимаю их как компактный (3 x 2 x 2) блок объектов.
Не являясь математиком, во-первых, Какова эта фактор-проблема, называемая, и, во-вторых, существует алгоритм, который может сделать это для любого положительного целого и предложить, когда решение невозможно.
Я знаю, что это начинается с факторинга целое число, а затем ...
бонусными баллами ... Может ли быть способ сделать 4 размерные решения? N мерный?
Я пытаюсь написать алгоритм C++, но это целая математическая проблема, которую я ударил.
Thank-you.
Таким образом, вы сможете учитывать число в нужное количество факторов, и вам просто нужен эффективный способ выбора между возможными измерениями? – beaker
Я использую * стандартный способ поиска факторов, но не улучшаю 2, так как если (x% 2 == 0), то это уже дает мне ВСЕ четные факторы? Разве это не означает, что * по крайней мере * уменьшите вдвое число целых чисел, которые я должен проверить, если мне нужно проверить только «нечетные»? –
@beaker Я так думаю. Существует ли стандартная библиотека факторов и факторинга и множеств факторов? Мне было интересно, имеет ли этот тип «ближайших факторов» название в математике. –