大多数等价因素

时间:2016-11-14 01:00:54

标签: c++ math

给定一个数字' n',这是2的幂,我怎样才能有效地找到彼此最相等的2个因子?换句话说,如果我有一个线性阵列并希望将其映射到2D,我怎样才能找到最相等的2D尺寸(图像尺寸最接近正方形)?

要做到这一点,必须采取某种按位操作,而不是循环使用因素。

1 个答案:

答案 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