给定一个正整数对象数量,比如小盒子,我想在桌子上整齐地摆放它们,形成一个漂亮的二维块,可能是矩形,也可能不是,但不是任何老旧的矩形,而是尽可能接近正方形的矩形。
为此,我需要两个整数,这两个整数可以将对象的整数分成最接近彼此的两个数字。
例如:
假设我有12个对象。我可以把它们排列成(12 x 1)或(1 x 12)或(6 x 2)或(2 x 6)或(3 x 4)或(4 x 3)。
我希望它们是(4 x 3),甚至是(3 x 4),但假设最大值首先出现,因为这是最大的一对可以将数字分成最接近的数字。
给定某个正整数x,哪种算法可以返回(y, z)?其中;
((y * z) = x) AND (y > z) AND (abs(y - z) is a minimum)
当没有解决方案时,我可以通过增加整数数量来搜索解决方案,从我实际拥有的对象数量开始,以找到附近的解决方案,然后将我的对象安装在该解决方案中,留下间隙。
但是...现在让我们加快速度!
如果我现在将其扩展到三维,而不是在平面上,并且我想要在三维空间中制作一个漂亮的整齐立方体对象块,该块具有最接近彼此的三个数字,这些数字可以被分成整数对象数量,以便从该对象数量中形成最紧凑,紧密包装的3D结构?
例如:
假设我有12个对象。我可以将它们排列为(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)对象块。
首先,不是数学家,这种因素问题叫什么名字?其次,是否有一种算法可以为任何正整数执行此操作并建议无解时?
我知道它始于将整数数因式分解,但然后...
额外加分...是否还有一种方法可以进行四维解决方案?N维?
我正在尝试编写C++算法,但这是我遇到的一个整数数学问题。
谢谢。
为此,我需要两个整数,这两个整数可以将对象的整数分成最接近彼此的两个数字。
例如:
假设我有12个对象。我可以把它们排列成(12 x 1)或(1 x 12)或(6 x 2)或(2 x 6)或(3 x 4)或(4 x 3)。
我希望它们是(4 x 3),甚至是(3 x 4),但假设最大值首先出现,因为这是最大的一对可以将数字分成最接近的数字。
给定某个正整数x,哪种算法可以返回(y, z)?其中;
((y * z) = x) AND (y > z) AND (abs(y - z) is a minimum)
当没有解决方案时,我可以通过增加整数数量来搜索解决方案,从我实际拥有的对象数量开始,以找到附近的解决方案,然后将我的对象安装在该解决方案中,留下间隙。
但是...现在让我们加快速度!
如果我现在将其扩展到三维,而不是在平面上,并且我想要在三维空间中制作一个漂亮的整齐立方体对象块,该块具有最接近彼此的三个数字,这些数字可以被分成整数对象数量,以便从该对象数量中形成最紧凑,紧密包装的3D结构?
例如:
假设我有12个对象。我可以将它们排列为(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)对象块。
首先,不是数学家,这种因素问题叫什么名字?其次,是否有一种算法可以为任何正整数执行此操作并建议无解时?
我知道它始于将整数数因式分解,但然后...
额外加分...是否还有一种方法可以进行四维解决方案?N维?
我正在尝试编写C++算法,但这是我遇到的一个整数数学问题。
谢谢。
x^3 + y^3 + z^3
。 - beaker