2016-11-14 10 views
0

2のべき乗である「n」という数字が与えられた場合、どのようにして互いに最も同等な2つの要因を効率的に見つけることができますか?言い換えれば、線形配列を持ち、それを2Dにマップしたい場合、最も平等な2Dディメンション(最も近いイメージディメンション)を見つけるにはどうすればよいですか?数値の最も等価な係数

ファクタをルーピングするのではなく、これを高速化するためのビット演算を行うことをお勧めします。

+2

「n」は「2^k」と表記できます(2の累乗だからです)。 'k = 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

n2^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

関連する問題