合同式と剰余算とは、法と呼ばれる固定した正の整数で割ったあとの余りに注目して計算する考え方です。2つの数が同じ余りをもつなら、その法のもとでは同じように振る舞います。これが「時計算」と呼ばれる理由です。
時間制の時計では、13時は1時の位置に来ますし、29時間後も5時間後と同じ位置に来ます。この繰り返しの感覚が、合同式と剰余算の基本的なイメージです。
剰余算での Mod の意味
整数 と正の整数 に対して、 は を で割ったときの余りを表します。
例:
なぜなら
だからです。
法は なので、 を足したり引いたりしても、この周期の中での位置は変わりません。
法 における合同の意味
合同とは、2つの整数が法 で同じように振る舞うことを表す正式な言い方です。
これは、 と を で割ったときの余りが同じであることを意味します。同値な判定方法として
があります。これは「 が を割り切る」という意味です。
したがって
です。なぜなら で、 は を割り切るからです。
この違いは重要です。
- は余りについての式です。
- は合同についての式です。
両者は関係していますが、同じものとして使うことはできません。
例題:8時の29時間後
今が8時だとして、時間制の時計で29時間後が何時かを考えます。
まず、 を法 で簡単にします。
つまり、29時間足すことは5時間足すことと同じ効果をもちます。
すると
となります。
したがって、時計は1時を指します。
重要なのは、最初に簡単にするこの操作です。法 では、 を に置き換えても答えは変わらず、計算がずっと楽になります。
先に簡単にすると問題が解きやすくなる理由
大きな数は、それと合同なより小さい数に置き換えると扱いやすくなることがよくあります。
たとえば、法 では
です。なぜなら は で割り切れるからです。問題が法 での値だけを気にしているなら、 の代わりに を使えます。
よくある間違い
等号と合同を混同する
は という意味ではありません。法 において同じ余りの類に属する、という意味です。
法が重要だということを忘れる
は正しいですが、 は正しくありません。合同は必ず特定の法に対して成り立ちます。
mod を普通の割り算のように扱う
は余りの です。商の でもなく、分数の でもありません。
ソフトウェアの % がいつも同じ数学的約束に従うと思い込む
正の数では、プログラミング言語の % は多くの場合、生徒が最初に学ぶ余りの考え方と一致します。負の数では約束が異なることがあるため、多くの数学の授業で使う最小の非負剰余と結果が一致しない場合があります。
合同式と剰余算はどこで使われるか
値が周期的に繰り返す場面では、合同式と剰余算が現れます。時計、曜日、チェックディジットの仕組み、ハッシュ、そして整数論の多くの場面で使われます。
暗号でも使われますが、基本の考え方は同じです。数を余りによって分類し、合同な数をその体系の中で同等なものとして扱います。
似た問題に挑戦してみよう
月曜日の100日後は何曜日でしょうか。曜日は法 で繰り返すので、まず答える前に を法 で簡単にしてみましょう。
別の例でも比べてみたいなら、GPAI Solver で自分なりの問題を試して、先に簡単にすると計算が短くなるか確かめてみてください。