• home
  • about
  • 全ての投稿
  • ソフトウェア・ハードウェアの設定のまとめ
  • 分析関連のまとめ
  • ヘルスケア関連のまとめ
  • 生涯学習関連のまとめ

冪乗-繰り返し二乗法

date: 2022-07-09 excerpt: 冪乗-繰り返し二乗法の計算

tag: アルゴリズム冪乗べき乗


冪乗-繰り返し二乗法の計算

概要

  • 冪乗を高速に計算するアルゴリズム
  • 例えば \(7^{50}\)を計算する際に、\(50 = 2^5 + 2^4 + 2^1\)と表現できることを利用して、\(O(logN)\)に計算量を下げることができる

具体例

def pow(x, n):
    # 負の乗数の場合は
    # xの逆数を取り、nを正の値にする
    if n < 0:
        x = 1 / x
        n = -n
    ret = 1
    while n:
        if n & 1 == 1:
            ret *= x
        x = x**2
        n = n >> 1
    return ret

assert pow(2, 10) == 1024
assert pow(2, -2) == 0.25

参考

  • 繰り返し2乗法、行列累乗/Qiita
  • 冪乗/Wikipedia


アルゴリズム冪乗べき乗 Share Tweet