给定一个数字' n',这是2的幂,我怎样才能有效地找到彼此最相等的2个因子?换句话说,如果我有一个线性阵列并希望将其映射到2D,我怎样才能找到最相等的2D尺寸(图像尺寸最接近正方形)?
要做到这一点,必须采取某种按位操作,而不是循环使用因素。
答案 0 :(得分:2)
n
可以表示为2^k
(因为你说它是2的幂)。如果k
为偶数,则为n == 2^(k/2) * 2^(k/2)
(例如16==4*4
)。如果k
是奇数,那么您可以获得的最接近的是n == 2^((k-1)/2) * 2^((k+1)/2)
(例如8==2*4
)