Python で繰り返し2乗法を書いてみた

繰り返し2乗法とは指数を2の累乗の積に分解して計算を効率化するテクニック。計算量が Olog(N) になる。

ただし Python の場合は組み込みの関数として pow が実装されているが勉強のため書いてみた。

// 350 乗の計算
x = 3
n = 50

def pow(x, n):
    ans = 1
    // n が 0 になるまで計算を続ける
    while n:
        if n % 2:
            ans *= x
        x *= x
        n >>= 1
    return ans

print(pow(3, 50))

繰り返し2乗法は N 個のものそれぞれを選ぶ選ばないなどの選択をするときに 2^N となるのでこのような場合に使用する。


この記事が気に入ったらサポートをしてみませんか?