「乗算チェーン」を与える実用的なアルゴリズムはありますか
明確にするために、目標は、任意の正確な長さの乗算変更を生成すること
です。長さ 1 の乗算チェーンは自明です。
「乗算チェーン」は、コードで使用される 2 つの数値 {start} と {multiplier} として定義されます。
Given a pointer to array of size [{count}] // count is a parameter
a = start;
do
{
a = a * multiplier; // Really: a = (a * multiplier) MOD (power of 2
*(pointer++) = a;
}
while (a != {constant} )
// Postcondition: all {count} entries are filled.
3 つのパラメーターを使用するルーチン を見つけたいと思い
ます
。
ルーチンは {start} と {multiplier} を返します。
理想的には、0 の {Constant} 値が有効であるべきです。
些細な例:
power of 2 = 256
stopping constant = 7
number of times for the loop = 1
returns {7,1}
自明でない例:
power of 2 = 256
stopping constant = 1
number of times for the loop = 49
returns {25, 19}
与えられた 2 のべき乗の最大 {count} はかなり小さい場合があります。
たとえば、2^4 (16) はカウントが 4 に制限されているようです