■剰余の計算(その23)
[Q]2^341 mod 341,すなわち,2^341を341で割ったときの余りを求めよ.
===================================
2^341 mod 341を計算するにあたっては、
2^10=1 mod 341であることから運良く計算できたが、そんな基底bや指数nに対しても成り立つアルゴリズムが必要になる。
もっと正式にb^n mod mを計算するために、まずnの2進数分解を求める。
反復2倍乗法を応用した反復平方による累乗法を用いると,
341=1+2^2+2^4+2^6+2^8
2^341=2^(1+2^2+2^4+2^6+2^8)=2・2^(2^2)・2^(2^4)・2^(2^6)・2^(2^8)
2=2
2^2=4
2^(2^2)=(2^2)^2=16
2^(2^3)=((2^2)^2)^2=256
2^(2^4)=(((2^2)^2)^2)^2=65536=64
2^(2^5)=((((2^2)^2)^2)^2)^2=4096=4
2^(2^6)=(((((2^2)^2)^2)^2)^2)^2=16
2^(2^7)=((((((2^2)^2)^2)^2)^2)^2)^2=256
2^(2^8)=(((((((2^2)^2)^2)^2)^2)^2)^2)^2=64
2^341=2^(1+2^2+2^4+2^6+2^8)=2・2^(2^2)・2^(2^4)・2^(2^6)・2^(2^8)
=2・2^4・2^6・2^4・2^6=2 (2^4・2^6=1より)
===================================