■剰余の計算(その22)
[Q]79^37 mod 107,すなわち,79^37を107で割ったときの余りを求めよ.
===================================
2^341 mod 341を計算するにあたっては、
2^10=1 mod 341であることから運良く計算できたが、そんな基底bや指数nに対しても成り立つアルゴリズムが必要になる。
もっと正式にb^n mod mを計算するために、まずnの2進数分解を求める。
反復2倍乗法を応用した反復平方による累乗法を用いると,
37=1+2^2+2^5
79^37=79^(1+2^2+2^5)=79^1・79^(2^2)・79^(2^5)
79=79
79^2=6241=35
79^(2^2)=(79^2)^2=1225=48
79^(2^3)=((79^2)^2)^2=2304=57
79^(2^4)=(((79^2)^2)^2)^2=3249=39
79^(2^5)=((((79^2)^2)^2)^2)^2=1521=23
79^37=79^(1+2^2+2^5)=79^1・79^(2^2)・79^(2^5)=79・48・23=87216=11
===================================
剰余計算をより優しくするもう一つの方法は
(x+y)^n=x^n+y^n mod n(nは素数)
がある。
===================================