Processing math: 100%
<オイラーの規準

オイラーの規準 \quad ― 塩田研一覚書帳 ―


平方剰余

 p を奇素数とするとき、modp の世界の平方数を平方剰余と呼びます。例えば (±1)21,(±2)24,(±3)22(mod7 ) ですので、mod7  の平方剰余は 1, 2, 4。これに対し 3, 5, 6mod7  の平方非剰余と呼びます。 ただし 0 はどちらにも入れません。mod13 では (±1)21, (±2)24, (±3)29, (±4)23, (±5)212, (±6)210 (mod13 ) ですので、平方剰余は 1, 3, 4, 9, 10, 12, 平方非剰余は 2, 5, 6, 7, 8, 11 といった具合です。

 \FFp=\ZZ/p\ZZ が体であることから、 0 でない剰余類のうち半分の (p1)/2 個が平方剰余、残る (p1)/2 個が平方非剰余であることがわかります。 これは、0 以外の実数のうち半分の正の数が平方数で、残る半分の負の数が非平方数であることに類似した現象です。

 平方剰余の考え方は、公開鍵暗号の分野でも、二次篩法、楕円曲線の有理点計算、ゼロ知識証明、コイントス・プロトコルなど幅広い応用を持ちますので、 平方剰余か否かの判定や、平方根計算などの高速なアルゴリズムが必要となります。

平方剰余記号

 平方剰余か否かを表す簡明な記号がありまして、平方剰余記号(ルジャンドル記号)と言い、 (ap)={0a0 (modp) のとき1a が modp の平方剰余のとき1a が modp の平方非剰余のとき で定義されます。 (見た目は括弧付きの分数と同じですので、状況からそのどちらなのかを判断しなければなりません。)

オイラーの規準

 平方剰余記号については、次の「オイラーの規準」という法則が成り立ちます: (ap)a(p1)/2 (modp) 上のように全ての剰余の2乗を計算してみなくてもこの法則を使えば (361)3(611)/23302058911320946491 (mod61) という計算で平方剰余か否かが判定できます。 公開鍵暗号で使うような大きな整数に対しては更に高速べき乗法を使うと、O(log3p) の計算量でその判定ができます。

 ところでこの「オイラーの規準」を「基準」と書いている書籍が暗号分野には多数存在します。 「規準」は判定するために用いる法則、「基準」は判定の目安となる数値、というような意味ですのでここはやはり「規準」と書いて頂きたい。 整数論では伝統的に「規準」の字を用いていますので、「基準」と書く著者はきっと整数論畑の人ではないのだろうという、 ある意味「判定基準」になっています。

ヤコビ記号

 平方剰余記号の引数 p を素数に限らず一般の正奇数に拡張したヤコビ記号の計算規則を利用すると、その計算量を O(log2p) に減らすことができます。 このとき大活躍するのが「相互法則」と呼ばれる摩訶不思議な法則です。 2つの異なる奇素数 p, q について、pmodq  で平方剰余であるか否か、と、qmodp  で平方剰余であるか否かの関係が明確にわかるというものです: (qp)={(pq)pq3 (mod4) のとき(pq)それ以外  中国剰余定理によれば modp  の情報と modq  の情報は独立であるはずなのですが、 平方剰余に関してはそうではないところが興味深いところです。

 ガウス先生は相互法則の証明を7通り(?)も発明しました。 相互法則はきっと他の対象についてもみつかるに違いない。 そのとき、自分が発明した7通りの証明法のいずれかが適用できるのではないか。 そう考えられてのことだそうです。 偉大な数学者はそれほどまでに未来を見通すものなのです。

戻る