2016-11-14 34 views
0

給定一個數字「n」,它是2的冪數,我怎樣纔能有效地找到最相當於彼此的兩個因子?換句話說,如果我有一個線性陣列並想將其映射到2D,我如何才能找到最相近的2D尺寸(最接近方形的圖像尺寸)?一個數字的大部分等價因子

需要進行某種按位操作才能使其更快速,而不是循環因素。

+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') –

+0

你絕對正確的懷疑。現在,你只需要想一想,「2到n」的力量在數學上是什麼意思,並給出了「n」,如何找到一個數字,當乘以自身時導致這個「2^n」。免費線索:當「n」是偶數時,這很容易。 –

+0

太棒了!請作爲答覆發佈,我會接受。 – user1043761

回答

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

相關問題