
数学において、モジュラー算術は整数の算術演算体系であり、数値が特定の値(法と呼ばれる)に達したり超えたりすると「一周する」という点で通常の演算体系とは異なります。モジュラー算術を用いた現代の数論のアプローチは、カール・フリードリヒ・ガウスが1801年に出版した著書『算術研究』の中で開発しました。 [ 1 ]
mを法とするモジュラー演算は、加算、乗算、減算の結果を、 mによる除算の余りで体系的に置き換えることから成ります。モジュラー演算の注目すべき特性は、 mによる除算が各演算の後に行われるか、計算の最後に一度だけ行われるか、あるいは計算の最後にいくつかの中間結果の後に行われるか(通常は中間結果が大きくなりすぎた場合)によって、計算結果が変わらないことです。
モジュラー算術を示す身近な例として、12時間時計の時針が挙げられます。時針が現在7を指している場合、8時間後には3を指します。通常の足し算では7 + 8 = 15となりますが、時計の文字盤では15は3と表示されます。これは、時針が12時間ごとに1回転し、時針が12を通過すると時間の数字がリセットされるためです。15は3と12を法として合同であるといい、15 ≡ 3 (mod 12)と表記します。したがって、7 + 8 ≡ 3 (mod 12)となります。
同様に、8時間待ってからさらに8時間待つ(合計16時間待つ)と、時計は4時間待った場合と同じ時刻変化を示します。これは、2 × 8 ≡ 4 (mod 12) という恒等式で表されます。ちょうど12時間待つと、時針は元の位置に戻るので、12は0として扱われます。したがって、12 ≡ 0 (mod 12) と書きます。
整数m ≥ 1を法と呼び、2 つの整数aとbは、その差a − bがmの整数倍である場合、法mに関して合同であると言います。つまり、ある整数kが存在し、
mを法とする合同は合同関係であり、加算、減算、乗算と互換性のある同値関係であることを意味します。mを法とする合同は次のように表されます。
括弧は、(mod m ) が右辺 (ここではb ) だけでなく、方程式全体に適用されることを意味します。
この表記は、 b mod mまたは( b mod m ) (「mod」の直前に括弧がない場合) という表記と混同してはいけません。これは、 bをmで割ったときの余り、つまり剰余演算を表します。つまり、b mod m は、 0 ≤ r < mかつr ≡ b (mod m )となる一意の整数rを表します。したがって、関係式は次のようになります。必ず読むべき そして、
合同関係a ≡ b (mod m )は次のように書き換えることができる。 ユークリッド除法 との関係を明確に示している。ただし、ここでのbは、 aをmで割ったときの余りである必要はない。むしろ、a ≡ b (mod m )は、 aとb をmで割ったときの余りが同じであることを主張している。つまり、
ここで、0 ≤ r < mは共通剰余です。これら 2 つの式を減算し、k = p − qと設定することで、以前の関係 ( a − b = km ) を復元します。
mを法とする合同式はmによる割り算によって定義され、−1は整数環の単元であるため、ある数が−mで割り切れるのは、その数がmで割り切れる場合のみです。これは、すべてのゼロでない整数m を法として用いることができることを意味します。
法12においては、以下のことが主張できる。
なぜなら、差は38 − 14 = 24 = 2 × 12 であり、これは12の倍数だからです。言い換えれば、38と14を12で割ったときの余りはどちらも2です。
合同の定義は負の値にも適用されます。例えば:
合同関係は同値関係 のすべての条件を満たしている。
a 1 ≡ b 1 (mod m )かつa 2 ≡ b 2 (mod m )、またはa ≡ b (mod m )の場合、次のようになります。[ 2 ]
a ≡ b (mod m )の場合、一般にk a ≡ k b (mod m )は偽である。しかし、以下は真である。
a ≡ b (mod mn )ならば、a ≡ b (mod m )およびa ≡ b (mod n )が成り立つ。
一般的な契約条件の解除については、以下の規定があります。
最後のルールは、モジュラー演算を除算に移行するために使用できます。b が a を割り切る場合、( a / b ) mod m = ( a mod ( bm )) / bとなります。
モジュラー乗法逆元は、以下の規則によって定義されます。
乗法逆元x ≡ a −1 (mod m )は、拡張ユークリッドアルゴリズムを使用して、ベズー方程式a x + my = 1をx、yについて 解くことにより効率的に計算できます。
特に、pが素数である場合、0 < a < pを満たすすべてのaに対してaはpと互いに素である。したがって、 pを法として 0 と合同でないすべてのaに対して乗法逆元が存在する。
合同関係のより高度な性質には、次のようなものがあります。
合同関係は同値関係の一種です。整数aの法mに関する同値類は、任意の整数kに対してa + kmの形のすべての整数の集合です。これは、法mに関するaの合同類または剰余類と呼ばれ、 ( a mod m )と表記することも、法m が文脈からわかっている場合はaまたは[ a ]と表記することもできます。
mを法とする各剰余類には、次の範囲内の整数がちょうど 1 つ含まれる。 したがって、これらは整数は、それぞれの剰余類の代表値である。
一般的に、整数の集合よりも整数そのものを扱う方が容易です。つまり、剰余類ではなく、代表元を扱う方がはるかに容易です。
したがって、( a mod m )は一般に0 ≤ r < mかつr ≡ a (mod m )を満たす唯一の整数rを表し、これはa の法mの剰余と呼ばれます。
特に、( a mod m ) = ( b mod m )はa ≡ b (mod m )と同等であり、このことから、この文脈では " ≡ "の代わりに" = " がよく使われる理由が説明できます。
mを法とする各剰余類は、そのメンバーのいずれか 1 つで表すことができますが、通常は各剰余類をそのクラスに属する最小の非負整数で表します[ 3 ] (これは除算の結果として得られる真の剰余であるため) 。mを法とする異なる剰余類の任意の 2 つのメンバーは、mを法として合同ではありません。さらに、すべての整数は、 mを法とする 1 つの剰余類にのみ属します。[ 4 ]
整数の集合{0, 1, 2, ..., m − 1}は、法mの最小剰余系と呼ばれます。m個の整数の集合で、 mを法として合同でない2つの整数の集合は、法m の完全剰余系と呼ばれます。
最小剰余系は完全剰余系であり、完全剰余系とは、mを法とする各剰余類の代表元をちょうど 1 つ含む集合のことである。[ 5 ]例えば、4 を法とする最小剰余系は{0, 1, 2, 3}である。4 を法とするその他の完全剰余系には、以下のようなものがある。
4を法とする剰余系として完全ではない集合の例をいくつか挙げる。
オイラーのトーシェント関数φ ( m )が与えられたとき、 mと互いに素で、法mに関して互いに合同でないφ ( m )整数の集合は、法mの縮約剰余系と呼ばれる。[ 6 ]例えば、上記の集合{5, 15}は、法4の縮約剰余系の一例である。
被覆系は、弾性率が異なる残基を含む可能性のある、もう一つのタイプの残基系である。
この段落の文脈では、絶対値mはほぼ常に正の値として扱われます。
mを法とするすべての合同類の集合は、 mを法とする整数環と呼ばれる環であり、次のように表される。、、、 または[ 7 ]指輪は、数学のさまざまな分野の基礎となるものです(下記の§ 応用を参照)。(数論の一部では、表記法は(m進整数の集合と混同される可能性があるため、避ける。)
m > 0の場合、次のようになります。
m = 1 の場合、はゼロリングです。m = 0の場合、は空集合ではなく、むしろ と同型である。なぜなら、a 0 = { a }だからです。
加算、減算、乗算は以下のように定義されます。以下の規則に従う:
前述の性質から、これらの操作では、は可換環である。例えば、環では1つは
24時間制の時計の計算のように。
表記法この環はの剰余環であるため、が使用される。理想によってmのすべての倍数で構成される集合、つまり、すべての数kmで
さらに、は巡回群である。すべての有限巡回群は と同型である。あるmに対して。[ 8 ]
mを法とする整数環は体である。すなわち、m が素数である場合に限り、すべての非零元は乗法逆元を持つ。m = p k がk > 1 の素数のべき乗である場合、同型を除いて一意な有限体が存在する。m個の要素を持つが、同型ではないこれは零因子を持つため、体ではありません。
m > 1 の場合、は、 mを法とする整数の乗法群で、可逆なものを表します。これは、aがmと互いに素である合同類a mから構成されます。これらはまさに乗法逆元を持つ類です。これらは乗法に関してアーベル群を形成し、その位数はφ ( m )です。ここでφはオイラーのトーシェント関数です。
純粋数学において、モジュラー算術は数論の基礎の一つであり、その研究のほぼあらゆる側面に関わっています。また、群論、環論、結び目理論、抽象代数学においても幅広く用いられています。応用数学においては、数式処理、暗号理論、コンピュータ科学、化学、そして視覚芸術や音楽芸術などで活用されています。
非常に実用的な応用例として、シリアル番号識別子内のチェックサムを計算することが挙げられます。たとえば、国際標準図書番号(ISBN)は、エラー検出のためにモジュロ11(10桁のISBNの場合)またはモジュロ10(13桁のISBNの場合)の演算を使用します。同様に、国際銀行口座番号(IBAN)は、銀行口座番号へのユーザー入力エラーを検出するためにモジュロ97の演算を使用します。化学では、CAS登録番号(各化学化合物の固有の識別番号)の最後の桁はチェックデジットであり、CAS登録番号の最初の2つの部分の最後の桁に1を掛け、その前の桁に2を掛け、さらにその前の桁に3を掛けるなどして、これらをすべて足し合わせ、その合計をモジュロ10で計算することによって算出されます。
暗号学において、モジュラー演算はRSAやDiffie-Hellmanなどの公開鍵システムを直接支え、楕円曲線の基礎となる有限体を提供し、 Advanced Encryption Standard (AES)、International Data Encryption Algorithm (IDEA)、RC4などのさまざまな対称鍵アルゴリズムで使用されています。RSAとDiffie-Hellmanはモジュラーべき乗を使用します。
コンピュータ代数では、モジュラー演算は中間計算やデータにおける整数係数のサイズを制限するためによく使用されます。これは、既知の効率的なアルゴリズムがすべてモジュラー演算を使用する問題である多項式の因数分解で使用されます。これは、整数と有理数上の多項式の最大公約数、厳密線形代数、およびグロブナー基底アルゴリズムの最も効率的な実装で使用されます。 1980年代にFidonetに投稿され、 Rosetta Codeにアーカイブされているように、モジュラー演算は、20年前に総当たり探索によってそれを否定するために使用されたCDC 6600スーパーコンピュータで使用された整数精度のわずか4分の1を使用して、Sinclair QLマイクロコンピュータでオイラーのべき乗和予想を否定するために使用されました。[ 9 ]
コンピュータサイエンスにおいて、モジュラ演算は、ビット演算や、固定幅の循環データ構造を含むその他の演算によく用いられます。多くのプログラミング言語や電卓に実装されている剰余演算は、この文脈でよく使われるモジュラ演算の応用例です。論理演算子XORは、2ビットを2で割った余りを計算します。
任意の基数bにおいて、分数を循環小数に変換する長除法は、分母を法とするbの剰余乗算と同等です。例えば、10 の場合、b = 10 となります。
音楽では、12 を法とする算術は、 12 音律平均律の体系を考える際に使用され、オクターブと異名同音の等価性が生じます (つまり、1:2 または 2:1 の比率の音高は等価であり、Cシャープは Dフラットと同じとみなされます)。
9の倍数を取る方法は、手計算で行った10進数の計算を素早く確認できる方法です。これは、9を法とする剰余演算、特に10≡1(mod 9)という重要な性質に基づいています。
7を法とする演算は、特定の日付の曜日を決定するアルゴリズムで使用されます。特に、ツェラーの合同式やドゥームズデイ・アルゴリズムは、7を法とする演算を多用しています。
より一般的に言えば、モジュラー算術は、政治(例えば、議席配分)、経済学(例えば、ゲーム理論)、その他の社会科学分野など、比例配分や資源配分が分析の中心となる分野にも応用されている。
モジュラー算術は幅広い応用分野を持つため、合同式の連立方程式を解くのがどれほど難しいかを知っておくことは重要です。線形合同式は、ガウス消去法の一種を用いて多項式時間で解くことができます(詳細は線形合同定理を参照)。また、モンゴメリー還元法などのアルゴリズムを用いることで、乗算や法mのべき乗といった単純な算術演算を大きな数に対して効率的に実行することも可能です。
離散対数や二次合同式を求めるといった演算は、整数因数分解と同じくらい難しいように思われ、暗号アルゴリズムや暗号化の出発点となる。これらの問題はNP中間レベルである可能性がある。