モッドについて

モッド(mod)はプログラミングで重要な役割を果たしています。

モッド(mod)とは数学の概念であり、次のように定義します。モッドはモジュロ(moduro)ということもあります。

整数a、bの差a-bが整数nの倍数のとき、すなわち a-b=kn (kは整数)のとき、aとbは法nに関して合同であると言います。このことを、

a≡b(mod n)  (a-b=kn)

と書きます。

具体的に、法を5とし、a=0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 ,・・・としたとき、b=0 , 1 , 2 , 3 , 4 , 0 , 1 , 2 , 3 , 4 ,・・・となります。

この数字の並びを観察すると、aの値はどんどん大きくなりますが、bの値は0,1,2,3,4の繰り返しとなっています。無限に大きくなる値を、ある範囲の値にマッピングしているところにmodの価値があります。

プログラミングにおいて、modはデータ構造の1つである待ち行列(キュー)の操作やハッシュ値の計算などで用いられています。いずれの場合も、ある値が大きくなっても法nが示す範囲の値にマッピングしています。

同一の法nに対する合同式には加算、減算、乗算が成り立ちます。

つまり、a≡a'(mod n)、b≡b'(mod n)としたとき、
(ⅰ) 加算 a+b≡a’+b'(mod n)
(ⅱ) 減算 a-b≡a’-b'(mod n)
(ⅲ) 乗算 ab≡a’b'(mod n)

(ⅰ)加算について証明を与えておきます。

modの定義に従い、a≡a'(mod n)、b≡b'(mod n)は次のように書き直します。
a-a’=pn  ,  b-b’=qn (p,qは整数)
∴ (a+b)-(a’+b’)=(p+q)n
ここで、(p+q)は整数なので、modの定義により、
a+b≡a’+b’ mod n
(証明終)

減算、乗算についても同様に証明できます。