如果要把 nn 个小正方体拼成一个大小为 a
imes b
imes ca×b×c 的大长方体,则必须满足以下条件:
abc=nabc=n,也就是小正方体总数必须等于大长方体中小正方体的个数。
大长方体的任意一条边都必须是小正方体边长的整数倍。也就是说,a,b,ca,b,c 中任意一个数必须可以整除 nn。
利用这两个条件,我们可以得到一个简单的规律:
首先将 nn 进行质因数分解,得到其质因数的集合 { p_1,p_2,cdots,p_k }{p
1
p
2
⋯,p
k
}。
然后找出这些质因数集合中的所有非空子集,例如对于 { 2,3;
5}{2,3,5} 这个集合,它的所有非空子集为 { 2 },{ 3 },{ 5 },{ 2;
3},{ 2;
5},{ 3;
5},{ 2,3;
5}{2},{3},{5},{2,3},{2,5},{3,5},{2,3,5}。
对于每一个非空子集 { p_{i_1},p_{i_2},cdots,p_{i_m} }{p
i
1
p
i
2
⋯,p
i
m
},可以将 nn 表示为 p_{i_1}^{k_1}
imes p_{i_2}^{k_2}
imes cdots
imes p_{i_m}^{k_m}p
i
1
k
1
×p
i
2
k
2
×⋯×p
i
m
k
m
的形式,其中 k_{i_1}, k_{i_2}, cdots, k_{i_m}k
i
1
k
i
2
⋯,k
i
m
分别为 p_{i_1},p_{i_2},cdots,p_{i_m}p
i
1
p
i
2
⋯,p
i
m
在此非空子集中的个数。
对于每一种表示形式 p_{i_1}^{k_1}
imes p_{i_2}^{k_2}
imes cdots
imes p_{i_m}^{k_m}p
i
1
k
1
×p
i
2
k
2
×⋯×p
i
m
k
m
如果其中所有指数 k_{i_1}, k_{i_2}, cdots, k_{i_m}k
i
1
k
i
2
⋯,k
i
m
中的最大值等于 aa,则可以将此表达式对应的大长方体设为长为 p_{i_1}^{k_1}p
i
1
k
1
宽为 p_{i_2}^{k_2}p
i
2
k
2
高为 p_{i_3}^{k_3}p
i
3
k
3
的长方体,记作 (p_{i_1}^{k_1},p_{i_2}^{k_2},p_{i_3}^{k_3})(p
i
1
k
1
p
i
2
k
2
p
i
3
k
3
)。
根据上述规律,我们可以得到所有能够将 nn 个小正方体拼成的大小为 a
imes b
imes ca×b×c 的大长方体,具体做法可以通过编程实现。