合同式を使った余りの計算
大きなべき乗の余りを直接計算するのは大変です。 を 5 で割った余りを求めようとして、 を実際に計算するわけにはいきません。合同式を使えば、このような計算を効率的に行えます。
合同式の基本
と を で割った余りが等しいとき、 と書きます。合同式には次の性質があります。
加法
、 ならば
乗法
、 ならば
べき乗
ならば
特に重要なのは、計算の途中で余りを取ってよいという点です。これにより、数を小さく保ちながら計算を進められます。
基本的な解法
を 5 で割った余りを求めます。
まず、7 を 5 で割った余りは 2 なので です。
次に、 に注目します。
なので
よって、余りは 1 です。
繰り返し二乗法
指数が大きいときは、繰り返し二乗法が便利です。 を 7 で割った余りを求めます。
指数を 2 進法で表す:
を順に計算(余りを取りながら)
必要な項を掛け合わせる
よって、余りは 2 です。
周期性を利用する方法
べき乗の余りは周期的になることが多いです。 を 7 で割った余りの列を見てみましょう。
| 2 | |
| 4 | |
| 1 | |
| 2 | |
| 4 | |
| 1 |
周期 3 で繰り返しています。 を 7 で割った余りは、 余り なので、 と同じです。
フェルマーの小定理との組み合わせ
が素数で が の倍数でないとき、 が成り立ちます。
を 7 で割った余りを求めます。
は素数で、 は の倍数でないので
なので
よって、余りは 2 です。
小さな指数
直接計算するか、周期を見つける
大きな指数
フェルマーの小定理や繰り返し二乗法を使う
合同式を使いこなせば、手計算でも非常に大きなべき乗の余りを求められます。