• ベストアンサー

乗算回数最小の冪乗アルゴリズム

断面n次モーメントを計算するプログラムを書いていてふと思ったのですが, X^n を乗算の繰り返しで計算する場合,一般の自然数nについて乗算回数最小の アルゴリズムって存在するんでしょうか? たとえばnが2の冪乗の場合,2乗を繰り返すと1回ごとに X → X^2 → X^4 → X^8 → X^16 → … となるので,X^n は log2(n) 回の乗算で計算でき,たぶんこれが最小だと思います. その他のnについてはどうでしょうか? nの素因数分解とか使えばうまくいくんでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
noname#22058
noname#22058
回答No.1

ここのサイトが参考になるようです。

参考URL:
http://www.asahi-net.or.jp/~kc2h-msm/mathland/math11/math1103.htm
noocyte
質問者

お礼

回答ありがとうございます. その URL にあるのとほとんど同じ方法は私も考えました. (質問に書いた,2乗を繰り返す方法を一歩進めればすぐ思いつく方法ですから.) これは実用上は十分効率の良いアルゴリズムだと思いますが, 残念ながら必ずしも乗算回数最小ではないようです. (すぐには具体例が思い浮かばないのですが.) http://math.pisan-dub.jp/concrete/index.php?catid=2&subcatid=15&itemid=9