0
2のべき乗である「n」という数字が与えられた場合、どのようにして互いに最も同等な2つの要因を効率的に見つけることができますか?言い換えれば、線形配列を持ち、それを2Dにマップしたい場合、最も平等な2Dディメンション(最も近いイメージディメンション)を見つけるにはどうすればよいですか?数値の最も等価な係数
ファクタをルーピングするのではなく、これを高速化するためのビット演算を行うことをお勧めします。
2のべき乗である「n」という数字が与えられた場合、どのようにして互いに最も同等な2つの要因を効率的に見つけることができますか?言い換えれば、線形配列を持ち、それを2Dにマップしたい場合、最も平等な2Dディメンション(最も近いイメージディメンション)を見つけるにはどうすればよいですか?数値の最も等価な係数
ファクタをルーピングするのではなく、これを高速化するためのビット演算を行うことをお勧めします。
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
)
「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') –
あなたは疑いの余地はありません。今度は、「2からn番目の」力が数学的に何を意味し、「n」を与えられたのか、それ自体が乗算された数を見つける方法は、この「2^n」になります。自由な手掛かり:これは 'n'が偶数のときは簡単です。 –
すばらしい!回答として投稿してください、私は受け入れます。 – user1043761