■剰余の計算(その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は素数)

がある。

===================================