オイラーの規準 \quad ― 塩田研一覚書帳 ―
平方剰余
p を奇素数とするとき、modp の世界の平方数を平方剰余と呼びます。例えば (±1)2≡1,(±2)2≡4,(±3)2≡2(mod7 ) ですので、mod7 の平方剰余は 1, 2, 4。これに対し 3, 5, 6 は mod7 の平方非剰余と呼びます。 ただし 0 はどちらにも入れません。mod13 では (±1)2≡1, (±2)2≡4, (±3)2≡9, (±4)2≡3, (±5)2≡12, (±6)2≡10 (mod13 ) ですので、平方剰余は 1, 3, 4, 9, 10, 12, 平方非剰余は 2, 5, 6, 7, 8, 11 といった具合です。平方剰余記号
平方剰余か否かを表す簡明な記号がありまして、平方剰余記号(ルジャンドル記号)と言い、 (ap)={0a≡0 (modp) のとき1a が modp の平方剰余のとき−1a が modp の平方非剰余のとき で定義されます。 (見た目は括弧付きの分数と同じですので、状況からそのどちらなのかを判断しなければなりません。)オイラーの規準
平方剰余記号については、次の「オイラーの規準」という法則が成り立ちます: (ap)≡a(p−1)/2 (modp) 上のように全ての剰余の2乗を計算してみなくてもこの法則を使えば (361)≡3(61−1)/2≡330≡205891132094649≡1 (mod61) という計算で平方剰余か否かが判定できます。 公開鍵暗号で使うような大きな整数に対しては更に高速べき乗法を使うと、O(log3p) の計算量でその判定ができます。ヤコビ記号
平方剰余記号の引数 p を素数に限らず一般の正奇数に拡張したヤコビ記号の計算規則を利用すると、その計算量を O(log2p) に減らすことができます。 このとき大活躍するのが「相互法則」と呼ばれる摩訶不思議な法則です。 2つの異なる奇素数 p, q について、p が modq で平方剰余であるか否か、と、q が modp で平方剰余であるか否かの関係が明確にわかるというものです: (qp)={−(pq)p≡q≡3 (mod4) のとき(pq)それ以外 中国剰余定理によれば modp の情報と modq の情報は独立であるはずなのですが、 平方剰余に関してはそうではないところが興味深いところです。