Jacobi記号(Jacobi symbol)とは、正の奇数 $n=p_1\cdots p_r$ と整数 $a$ に対し、Legendre 記号の積 $\left(\frac an\right)=\prod_i\left(\frac a{p_i}\right)$ として定まる記号である。分子・分母について乗法的で、相互法則と補充法則がそのまま成り立つので、互除法と同じ手順で素因数分解なしに値が求まり、その回数は $2\log_2n+1$ 以下である。法が合成数のときは値が $1$ でも平方剰余とは限らない。一方、奇数の合成数 $n$ では $a^{(n-1)/2}\equiv\left(\frac an\right)\pmod n$ を満たす既約剰余類は半分以下しかなく、これが Solovay–Strassen の確率的素数判定の根拠になる。
前提知識: Legendre記号, 平方剰余の相互法則, 合同式, 既約剰余類群
素数 $p$ を法とする Legendre記号 $\left(\frac ap\right)$ は、$a$ が法 $p$ で平方数と合同かどうかを $\pm1$ で表す。これを法が奇数の場合に広げたものが Jacobi 記号 $\left(\frac an\right)$ である。$n$ を素因数分解して、各素因数を法とする Legendre 記号を掛け合わせて定める。法が合成数のとき、Jacobi 記号はもはや平方剰余かどうかを判定しないが、その代わりに大きな利点がある。相互法則がそのまま成り立つので、分子と分母を入れ替えては割った余りに置き換える、Euclidの互除法と同じ形の計算で値が求まり、$n$ を素因数分解する必要がない。
この記事では、Jacobi 記号の定義と基本性質を述べたあと、次を証明する。互除法型の計算手順が必ず止まって正しい値を返し、繰り返しの回数が $2\log_2n+1$ 以下であること(thm-jac-algorithm)。$n$ が平方数でなければ、既約剰余類のちょうど半分で値が $1$ になること(prop-jac-half)。奇数の合成数 $n$ では、$a^{(n-1)/2}\equiv\left(\frac an\right)\pmod n$ を満たす既約剰余類 $a$ が全体の半分以下しかないこと(thm-jac-euler-test)。最後の定理は、素数かどうかを確率的に判定する方法(Solovay–Strassen の判定法)の根拠になる。
$n$ を正の奇数、$a$ を整数とする。$n=p_1p_2\cdots p_r$($p_i$ は奇素数で、重複を許す。$n=1$ なら $r=0$)と素因数分解して
$$
\left(\frac an\right):=\prod_{i=1}^r\left(\frac a{p_i}\right)
$$
と定め、Jacobi 記号(Jacobi symbol)という。右辺の各因子は Legendre 記号であり、$n=1$ では空積として $\left(\frac a1\right)=1$ である。
これは 平方剰余の相互法則 の記事の定義「Jacobi記号の定義」と同じである。$n$ が素数なら Legendre 記号に一致する。Legendre 記号 $\left(\frac ap\right)$ は、$p\mid a$ なら $0$、$a$ が法 $p$ の平方剰余なら $1$、平方非剰余なら $-1$ である。
$m,n$ を正の奇数、$a,b$ を整数とする。
1:各因子は $0,\pm1$ のどれかで、因子 $\left(\frac a{p_i}\right)$ が $0$ になるのは $p_i\mid a$ のときに限る。よって積が $0$ になることと、$n$ のある素因数が $a$ を割り切ること、すなわち $\gcd(a,n)>1$ は同値である。2:前半は Legendre 記号の乗法性(Legendre記号 の記事の式「Legendre 記号の計算規則」)を各因子に使えばよく、後半は $mn$ の素因数分解が $m$ と $n$ の素因数分解を並べたものであることによる。3:$a\equiv b\pmod n$ なら各 $p_i$ について $a\equiv b\pmod{p_i}$ で、Legendre 記号は法 $p_i$ の剰余類だけで決まる。4:平方剰余の相互法則 の記事の定理「Jacobi記号の相互法則」である。5:$a\equiv c^2\pmod n$ なら 2・3 により $\left(\frac an\right)=\left(\frac cn\right)^2$ で、1 により $\left(\frac cn\right)=\pm1$ なので値は $1$ である。$\square$
5 の逆は成り立たない。$\left(\frac an\right)=1$ でも、$a$ が法 $n$ の平方剰余とは限らない(ex-jac-not-residue)。$\left(\frac an\right)=-1$ なら、ある $p_i$ で $\left(\frac a{p_i}\right)=-1$ なので、$a$ は法 $p_i$ の、したがって法 $n$ の平方剰余でない。
Legendre 記号を相互法則で計算すると、$\left(\frac qp\right)$ を $\left(\frac pq\right)$ に入れ替え、$p$ を $q$ で割った余りに置き換える、という操作を繰り返すことになる。ところが余りは素数とは限らないので、Legendre 記号のままでは、その都度素因数分解しなければならない。Jacobi 記号は、法が奇数なら何でもよいように記号を広げ、しかも相互法則がそのまま成り立つようにしたものである。こうすると素因数分解をまったく使わずに、互除法と同じ速さで計算が終わる。値の意味(平方剰余かどうか)は法が合成数のとき失われるが、計算の道具としてはそれで十分であり、さらに合成数を見抜く道具にもなる。
$n=15$、$a=2$ とすると、$\left(\frac2{15}\right)=\left(\frac23\right)\left(\frac25\right)=(-1)\cdot(-1)=1$ である($3\equiv3$、$5\equiv5\pmod8$ なので第 2 補充法則によりどちらも $-1$)。しかし法 $15$ の平方の余りは $0,1,4,6,9,10$ で、$2$ は含まれない。$2$ は法 $3$ でも法 $5$ でも平方剰余でないので、2 つの $-1$ が掛け合わされて $1$ になっている。
$\left(\frac{1001}{9907}\right)$ を計算する($9907$ は素数である)。分子を分母で割った余りに置き換え、$2$ の冪をくくり出し、相互法則で入れ替える。
$$
\left(\frac{1001}{9907}\right)=\left(\frac{9907}{1001}\right)=\left(\frac{898}{1001}\right)=\left(\frac{2}{1001}\right)\left(\frac{449}{1001}\right)=\left(\frac{449}{1001}\right)
$$
最初の入れ替えでは $1001\equiv1\pmod4$ なので符号は変わらない。$1001\equiv1\pmod8$ なので $\left(\frac2{1001}\right)=1$ である。続けて
$$
\left(\frac{449}{1001}\right)=\left(\frac{1001}{449}\right)=\left(\frac{103}{449}\right)=\left(\frac{449}{103}\right)=\left(\frac{37}{103}\right)=\left(\frac{103}{37}\right)=\left(\frac{29}{37}\right)=\left(\frac{37}{29}\right)=\left(\frac{8}{29}\right)
$$
で、$449\equiv1$、$37\equiv1$、$29\equiv1\pmod4$ なので入れ替えのたびに符号は変わらない。最後に $\left(\frac8{29}\right)=\left(\frac2{29}\right)^3=-1$($29\equiv5\pmod8$)なので、$\left(\frac{1001}{9907}\right)=-1$ であり、$1001$ は法 $9907$ の平方非剰余である。途中の $1001=7\cdot11\cdot13$ を素因数分解する必要はなかった。
正の奇数 $n$ と整数 $a$ を入力とし、符号 $s:=1$ から始めて次を行う。
正の奇数 $n$ と整数 $a$ に対し、def-jac-algorithm は有限回で終わり、$\left(\frac an\right)$ を出力する。繰り返し(手順 5 まで進む回)の回数は $2\log_2n+1$ 以下である。
はじめの入力を $(a_0,n_0)$ とする。
正しさ.「いまの $(a,n)$ と $s$ について $s\left(\frac an\right)=\left(\frac{a_0}{n_0}\right)$ で、$n$ は正の奇数」が、手順を進めても保たれることを示す。最初は $s=1$ で成り立つ。手順 2 の置き換えでは prop-jac-basic の 3 により $\left(\frac an\right)$ は変わらない。手順 2 で $a=0$ なら、$n>1$ なので $\gcd(0,n)=n>1$ で、同じ命題の 1 により $\left(\frac0n\right)=0$、すなわち元の値は $0$ であり、出力は正しい。手順 1 で $n=1$ なら $\left(\frac a1\right)=1$ なので元の値は $s$ であり、出力は正しい。
手順 3〜5 では、prop-jac-basic の 2・4 により $\left(\frac an\right)=\left(\frac2n\right)^e\left(\frac{a'}n\right)$ で、$\left(\frac2n\right)=-1$ となるのは $n\equiv\pm3\pmod8$ のときである。$a'$ と $n$ が互いに素なら、同じ命題の 4 により $\left(\frac{a'}n\right)=\epsilon\left(\frac n{a'}\right)$ であり、$\epsilon=(-1)^{\frac{a'-1}2\cdot\frac{n-1}2}$ が $-1$ になるのは $a'\equiv n\equiv3\pmod4$ のときである。$a'$ と $n$ が互いに素でなければ、同じ命題の 1 により $\left(\frac{a'}n\right)=0=\left(\frac n{a'}\right)$ なので、この等式はどちらの符号でも成り立つ。したがって手順 3・4 で符号を直した $s$ について $s\left(\frac n{a'}\right)$ は直す前の $s\left(\frac an\right)$ に等しく、手順 5 の後も性質が保たれる。$a'$ は $1\le a'\le a< n$ を満たす奇数である。
終わること.手順 5 のたびに $n$ は $a'< n$ に置き換わるので、正の奇数 $n$ は真に減り続け、有限回で $n=1$ になるか、手順 2 で $a=0$ になって終わる。
回数.$i$ 回目の繰り返しの後の $n$ を $n_i$ とすると $n_0> n_1> n_2>\cdots$ である。$i\ge1$ について、$i+1$ 回目の繰り返しでは、$a=n_{i-1}$ を $n_i$ で割った余り $r$ に置き換え、$n_{i+1}$ は $r$ の奇数の部分なので $n_{i+1}\le r$ である。$n_i< n_{i-1}$ なので商は $1$ 以上で、$n_{i-1}\ge n_i+r\ge n_i+n_{i+1}> 2n_{i+1}$ である。よって $n_{2j}\le n_0/2^j$ である($j=0$ では等号)。繰り返しが $k$ 回行われたとき $n_k\ge1$ なので、$k=2j$ なら $1\le n_0/2^j$ から $k=2j\le2\log_2n_0$、$k=2j+1$ なら $1\le n_{2j+1}< n_{2j}\le n_0/2^j$ から $j< \log_2n_0$ で $k< 2\log_2n_0+1$ である。どちらの場合も $k\le2\log_2n_0+1$ である。$\square$
手順は Euclidの互除法 とまったく同じ形で、互除法と同じく商が $1$ のとき減り方が最も遅い。この手順は Sho08 §12.3(p. 348)にあり、同書は正しさを Theorem 12.5(p. 346)からすぐ従うとして、手間を $O(\operatorname{len}(a)\operatorname{len}(n))$($\operatorname{len}$ は 2 進法の桁数)と述べている。$\left(\frac an\right)=0$ を出力するのは $\gcd(a,n)>1$ のときに限り、そのとき手順は事実上 $\gcd(a,n)$ を互除法で求めている。
$n$ を正の奇数とする。
prop-jac-basic の 1・2・3 により、$a\bmod n\mapsto\left(\frac an\right)$ は $(\mathbb{Z}/n\mathbb{Z})^\times$ 上でうまく定まり、値は $\pm1$ で、積を積に移す準同型 $J_n$ である。
1:$n=m^2$ なら、同じ命題の 2 により $\left(\frac an\right)=\left(\frac am\right)^2=1$ である。
2:$n$ が平方数でないので、ある素数 $p$ が $n$ を奇数乗 $p^e$($e$ は奇数)でちょうど割り切る。$n=p^em$($p\nmid m$)とおく。法 $p$ の平方非剰余 $b$ がある(平方剰余 の記事の命題「平方剰余はちょうど半分」)。中国剰余定理 により、$a\equiv b\pmod{p^e}$ かつ $a\equiv1\pmod m$ となる整数 $a$ がある。$a$ は $n$ と互いに素で、
$$
\left(\frac an\right)=\left(\frac ap\right)^e\left(\frac am\right)=\left(\frac bp\right)^e\left(\frac 1m\right)=(-1)^e=-1
$$
である($a\equiv b\pmod p$、$a\equiv1\pmod m$ と同じ命題の 2・3 による)。よって $J_n$ は全射で、その核は指数 $2$ の部分群である($J_n$ の像 $\{\pm1\}$ と $(\mathbb{Z}/n\mathbb{Z})^\times/\ker J_n$ が同型)。核の元の個数は $\varphi(n)/2$ である。$\square$
これは Sho08 Exercise 12.3 (b)(c) の前半(p. 348)の主張で、上で解いた。$n=15$ では $\varphi(15)=8$ のうち $\left(\frac a{15}\right)=1$ となるのは $1,2,4,8$ の 4 個だが、そのうち平方剰余は $1,4$ だけである(ex-jac-not-residue)。
$n$ が奇素数なら、Euler の規準(平方剰余 の記事の定理「Eulerの規準」)により、すべての整数 $a$ について $a^{(n-1)/2}\equiv\left(\frac an\right)\pmod n$ である。左辺は冪乗の計算、右辺は thm-jac-algorithm の計算で、どちらも $n$ の桁数の多項式の手間で求まる。この合同式が奇数の合成数ではどれくらい成り立つかを調べる。
$n>1$ を奇数とし、
$$
E(n):=\Bigl\{a\in(\mathbb{Z}/n\mathbb{Z})^\times\Bigm|a^{(n-1)/2}\equiv\left(\frac an\right)\pmod n\Bigr\}
$$
とおく。$E(n)$ は $(\mathbb{Z}/n\mathbb{Z})^\times$ の部分群である。$n$ が素数なら $E(n)=(\mathbb{Z}/n\mathbb{Z})^\times$ であり、$n$ が合成数なら $E(n)\ne(\mathbb{Z}/n\mathbb{Z})^\times$ で、したがって
$$
\lvert E(n)\rvert\le\frac{\varphi(n)}2
$$
である。
部分群であること.$1\in E(n)$ である。$a,b\in E(n)$ なら、prop-jac-basic の 2 により $(ab)^{(n-1)/2}=a^{(n-1)/2}b^{(n-1)/2}\equiv\left(\frac an\right)\left(\frac bn\right)=\left(\frac{ab}n\right)$ なので $ab\in E(n)$ である。有限群の空でない部分集合で積について閉じたものは部分群である(各元の冪が有限個しかないので、逆元もその冪として含まれる)。
素数の場合.上に述べた Euler の規準による。
合成数の場合.$E(n)=(\mathbb{Z}/n\mathbb{Z})^\times$ と仮定して矛盾を導く。2 つの場合に分ける。
(i) ある素数 $p$ について $p^2\mid n$ のとき。$g:=1+n/p$ とおく。$p\mid n/p$ なので $(n/p)^2=n\cdot(n/p^2)$ は $n$ の倍数であり、二項定理で
$$
g^p=1+p\cdot\frac np+\sum_{j\ge2}\binom pj\Bigl(\frac np\Bigr)^j\equiv1\pmod n
$$
である。よって $g$ は $n$ と互いに素で、$g\not\equiv1\pmod n$ だから、$(\mathbb{Z}/n\mathbb{Z})^\times$ での位数はちょうど素数 $p$ である。仮定から $g\in E(n)$ なので、prop-jac-basic の 1 より $\left(\frac gn\right)=\pm1$ で、$g^{n-1}=\bigl(g^{(n-1)/2}\bigr)^2\equiv\left(\frac gn\right)^2=1$ である。位数 $p$ の元の冪が $1$ になる指数は $p$ の倍数なので $p\mid n-1$ となるが、$p\mid n$ なので $p\mid1$ となり矛盾する。
(ii) $n$ が平方因子をもたないとき。$n$ は合成数なので、素数 $p$ と $1$ より大きい奇数 $m$ で $n=pm$、$p\nmid m$ と書ける。法 $p$ の平方非剰余 $b$ をとり、中国剰余定理 で $a\equiv b\pmod p$、$a\equiv1\pmod m$ となる $a$ をとる。prop-jac-half の証明と同じ計算で $\left(\frac an\right)=\left(\frac bp\right)\left(\frac1m\right)=-1$ である。仮定から $a^{(n-1)/2}\equiv-1\pmod n$ であり、法 $m$ で見ると $a\equiv1$ なので $1\equiv-1\pmod m$、すなわち $m\mid2$ となるが、$m$ は $1$ より大きい奇数なので矛盾する。
どちらの場合も矛盾なので $E(n)$ は真の部分群である。Lagrangeの定理 により $\lvert E(n)\rvert$ は $\varphi(n)$ の約数で、$\varphi(n)$ より小さいので $\varphi(n)/2$ 以下である。$\square$
これは Sho08 Exercise 12.6 (a)–(c)(p. 349)の主張で、上で解いた(同書の注 p. 357 によれば Solovay と Strassen による)。等号が成り立つ合成数もある。$n=1729=7\cdot13\cdot19$ では、$(n-1)/2=864$ が $6,12,18$ の倍数なので、$n$ と互いに素なすべての $a$ で $a^{864}\equiv1\pmod n$ となり(法 $7,13,19$ のそれぞれで Fermatの小定理 を使い、中国剰余定理 でまとめる)、$E(n)$ は $a\mapsto\left(\frac an\right)$ の核に等しい。$n$ は平方数でないので、prop-jac-half により $\lvert E(n)\rvert=\varphi(n)/2=648$ である。
この定理から、次の確率的な判定法(Solovay–Strassen の判定法)が得られる。奇数 $n>1$ について、$1$ から $n-1$ までの整数 $a$ を無作為に選び、$\gcd(a,n)>1$ なら合成数と答え、そうでなければ $a^{(n-1)/2}$ と $\left(\frac an\right)$ を法 $n$ で比べ、一致しなければ合成数、一致すれば「たぶん素数」と答える。$n$ が素数なら必ず「たぶん素数」と答え、$n$ が合成数なら「たぶん素数」と答える確率は $1/2$ 以下である。選び方を独立に $k$ 回繰り返せば、合成数を見逃す確率は $2^{-k}$ 以下になる。
| 外す条件 | 反例 | 成り立たなくなること |
|---|---|---|
| 法が素数であること(Legendre 記号の場合) | $n=15$、$a=2$ | 値が $1$ なら平方剰余 |
| prop-jac-basic の 4 の相互法則の「互いに素」 | $m=3$、$n=9$ | $\left(\frac mn\right)\left(\frac nm\right)=\pm1$ |
| prop-jac-half の 2 の「平方数でない」 | $n=9$ | 値が $1$ の剰余類がちょうど半分 |
| thm-jac-euler-test の「合成数」 | $n=13$(素数) | $\lvert E(n)\rvert\le\varphi(n)/2$ |
| thm-jac-euler-test の比べる相手を Jacobi 記号から $1$ に替える(Fermat の条件 $a^{n-1}\equiv1$) | $n=561$ | 条件を満たす既約剰余類が半分以下 |
1 行目は ex-jac-not-residue。2 行目:$\gcd(3,9)=3$ なので prop-jac-basic の 1 により $\left(\frac39\right)=\left(\frac93\right)=0$ で、積は $0$ である。3 行目:$9=3^2$ と互いに素な $a$ について $\left(\frac a9\right)=\left(\frac a3\right)^2=1$ で、$\varphi(9)=6$ 個すべてで値が $1$ である。4 行目:Euler の規準により $E(13)$ は既約剰余類 $12$ 個全体である。5 行目:$561=3\cdot11\cdot17$ は Carmichael数 で、$561$ と互いに素なすべての $a$ について $a^{560}\equiv1\pmod{561}$ が成り立つ(Carmichael数 の記事の例「最小の Carmichael 数 $561$」)。一方 $E(561)$ の元は $\varphi(561)=320$ 個のうち $80$ 個しかない(計算機による)。Jacobi 記号と比べる判定には、Fermat の条件で起きる「すべての底を通過する合成数」がない。
奇数の合成数 $n$ と $n$ と互いに素な $a$ について、$a^{(n-1)/2}\equiv\left(\frac an\right)\pmod n$ が成り立つとき、$n$ を底 $a$ の Euler–Jacobi 擬素数 という。thm-jac-euler-test は、どの合成数も、既約剰余類の半分以上の底について Euler–Jacobi 擬素数でないことを述べている。Fermat の小定理による判定($a^{n-1}\equiv1$ を調べる)では、Carmichael数 がすべての底を通過してしまう。$n-1=2^st$($t$ は奇数)と分けて $a^t,a^{2t},\dots$ を調べる Miller–Rabin の判定法では、合成数を通過させる底は $1$ から $n-1$ のうち $(n-1)/4$ 個以下であることが知られている(Carmichael数 の記事の節「素数判定との関係」)。
Jacobi 記号は Legendre 記号と同じ $\left(\frac an\right)$ で書くので、法 $n$ が素数かどうかで意味(平方剰余の判定になるかどうか)が変わることに注意する。$(a\mid n)$ や $(a/n)$ と書く本もある(Sho08 §12.2、p. 346 は $(a\mid n)$)。法を負の数や偶数に広げた Kronecker 記号もあるが、この記事では扱わない。
Mathpediaは寄付と、参考文献の書籍リンク(Amazonアソシエイト)の紹介料で運営されています。 支援について / 寄付する