Miller-Rabin素数判定法

同義語:Miller–Rabin素数判定法ミラー–ラビン素数判定法Miller–RabinテストMiller–Rabin primality testMiller–Rabin test

概要

Miller-Rabin素数判定法(Miller–Rabin primality test)とは、奇数 $n$ について $n-1=2^st$($t$ は奇数)と書き、無作為に選んだ底 $a$ について $a^t\equiv1$ であるか、$a^t,a^{2t},\dots,a^{2^{s-1}t}$ のどれかが法 $n$ で $-1$ になるかを調べる確率的な素数判定法である。素数はどの底でもこの条件を満たし、奇数の合成数では条件を満たす底が $1$ から $n-1$ のうち $(n-1)/4$ 個以下なので、底を独立に $k$ 回選べば合成数を見逃す確率は $4^{-k}$ 以下である。1 回の判定は $n$ の桁数の 3 乗程度の手間で済み、Fermat の小定理だけを使う判定と違って Carmichael 数にも欺かれないため、大きな素数を探す実用的な方法として使われる。

$$\newcommand{C}[0]{\mathbb{C}} \newcommand{div}[0]{\mathbin{÷}} \newcommand{N}[0]{\mathbb{N}} \newcommand{Q}[0]{\mathbb{Q}} \newcommand{R}[0]{\mathbb{R}} \newcommand{Z}[0]{\mathbb{Z}} $$

前提知識: Fermatの小定理, 擬素数, 既約剰余類群, 中国剰余定理, 原始根

大きな奇数 $n$ が素数かどうかを、$n$ を素因数分解せずに判定したい。Fermatの小定理 によれば、$n$ が素数なら $n$ で割り切れないすべての $a$ について $a^{n-1}\equiv1\pmod n$ である。そこで $a^{n-1}\bmod n$ を計算して $1$ でなければ合成数と分かる(計算整数論 の記事の節「Fermat の小定理による素数判定」)。ところが Carmichael数 は、$n$ と互いに素なすべての底 $a$ についてこの合同式を満たしてしまい、この方法では見抜けない。
Miller–Rabin 素数判定法 は、$n-1=2^st$($t$ は奇数)と分けて $a^t,a^{2t},a^{4t},\dots$ を順に調べ、「素数を法とすると $1$ の平方根は $\pm1$ しかない」という性質も使う判定法である。この記事では、判定法を定義したあと、次を証明する。素数はどの底でも判定を通過すること(thm-mr-prime)。奇数の合成数 $n$ では、判定を通過する底は $1$ から $n-1$ のうち $(n-1)/4$ 個以下しかないこと(thm-mr-quarter)。したがって無作為に選んだ底で $k$ 回くり返すと、合成数を見逃す確率は $4^{-k}$ 以下になる(cor-mr-error)。1 回の判定の手間は $n$ の桁数の 3 乗程度である(prop-mr-cost)。

定義

以下、$n\ge3$ を奇数とし、$n-1=2^st$($s\ge1$、$t$ は奇数)と書く。$s$ と $t$ は $n$ から一通りに決まる。

Miller–Rabin の条件

整数 $a$($1\le a\le n-1$)が次のどちらかを満たすとき、$n$ は 底 $a$ の Miller–Rabin の条件を満たす、または底 $a$ で 判定を通過する という。

  1. $a^t\equiv1\pmod n$ である。
  2. $0\le j\le s-1$ のある $j$ について $a^{2^jt}\equiv-1\pmod n$ である。
    条件を満たす底の集合を
    $$ L(n):=\{a\in\{1,2,\dots,n-1\}\mid n\text{ は底 }a\text{ の Miller–Rabin の条件を満たす}\} $$
    と書く。$n$ が合成数のとき、$L(n)$ の元を $n$ の 強い嘘つき(strong liar)と呼ぶことがある。

$n$ が合成数で $a\in L(n)$ のとき、$n$ は底 $a$ の 強擬素数 である(擬素数 の記事の定義「Euler–Jacobi 擬素数と強擬素数」)。条件の 1・2 のどちらでも $a^{n-1}=a^{2^st}\equiv1\pmod n$ となる(擬素数 の記事の命題「強い条件は Fermat の条件を含む」と同じ計算)。とくに $a\cdot a^{n-2}\equiv1$ なので、$L(n)$ の元は $n$ と互いに素であり、$L(n)$ は法 $n$ の 既約剰余類群 $(\mathbb Z/n\mathbb Z)^\times$ の部分集合とみなせる。
条件は、数列
$$ a^t,\ a^{2t},\ a^{4t},\ \dots,\ a^{2^{s-1}t},\ a^{2^st}=a^{n-1}\pmod n $$
を左から見て、「最初の項が $1$ であるか、最後の項より前に $-1$ が現れる」と言い換えられる。各項は前の項の 2 乗である。

判定の手順

奇数 $n\ge3$ と、くり返しの回数 $k\ge1$ を入力とする。次を $k$ 回くり返す。

  1. $\{1,2,\dots,n-1\}$ から $a$ を一様に無作為に選ぶ(各回の選び方は互いに独立とする)。
  2. $b:=a^t\bmod n$ を計算する。$b=1$ または $b=n-1$ なら、この回は通過とする。
  3. そうでなければ、$b$ を $b^2\bmod n$ に置き換えることを最大 $s-1$ 回くり返し、途中で $b=n-1$ になればこの回は通過とする。
  4. 通過しなければ「合成数」と出力して終わる。
    $k$ 回とも通過したら「おそらく素数」と出力する。この手順を Miller–Rabin 素数判定法(Miller–Rabin primality test)という。

手順 2・3 で調べる $b$ は順に $a^t,a^{2t},\dots,a^{2^{s-1}t}$ を $n$ で割った余りなので、ある回が通過することは、その回の $a$ について $a\in L(n)$ であることと同じである。手順 3 で $b=1$ になった時点で、それ以降の項はすべて $1$ なので、そこで「合成数」と打ち切ってよい。「合成数」という出力は常に正しい(thm-mr-prime)。「おそらく素数」という出力は、$n$ が合成数のときにも起こりうるが、その確率が小さいことを cor-mr-error で示す。

直感

$n$ が素数なら、$a^{n-1}\equiv1$ であり、さらに「$x^2\equiv1$ なら $x\equiv\pm1$」が成り立つ。数列 $a^t,a^{2t},\dots,a^{n-1}$ は最後に $1$ になるので、初めて $1$ になる項の一つ前は $-1$ でなければならない(最初の項がすでに $1$ の場合を除く)。合成数 $n$ は、この 2 つのどちらかを破ることが多い。Fermat の小定理だけを使う判定(Fermatテスト)は前者だけを調べるので Carmichael 数に負けるが、後者も調べると「$1$ の平方根が $\pm1$ 以外にもある」という合成数特有の現象を捕まえられる。しかも $\pm1$ 以外の $1$ の平方根 $x$ が見つかれば、$n\mid(x-1)(x+1)$ で $n$ はどちらの因数も割らないので、$\gcd(x-1,n)$ が $n$ の自明でない約数になる。

例

素数 $97$ と底 $5$

$n=97$ では $96=2^5\cdot3$ で、$s=5$、$t=3$ である。底 $a=5$ について数列を法 $97$ で計算すると
$$ 5^3=125\equiv28,\quad 28^2=784\equiv8,\quad 8^2=64,\quad 64^2=4096\equiv22,\quad 22^2=484\equiv96\equiv-1 $$
である($784=97\cdot8+8$、$4096=97\cdot42+22$、$484=97\cdot4+96$)。$j=4\le s-1$ で $-1$ が現れたので、底 $5$ で判定を通過する。最後の項 $5^{96}$ は $(-1)^2=1$ である。

合成数 $1105$ と底 $2$:約数が見つかる

$1105=5\cdot13\cdot17$ は Carmichael数 で、$1105$ と互いに素なすべての $a$ について $a^{1104}\equiv1\pmod{1105}$ が成り立つ。$1104=2^4\cdot69$ なので $s=4$、$t=69$ であり、底 $2$ の数列は
$$ 2^{69}\equiv967,\quad 967^2\equiv259,\quad 259^2\equiv781,\quad 781^2\equiv1\pmod{1105} $$
となる($781^2=609961=1105\cdot552+1$)。最初の項は $1$ でなく、$1$ になる直前の項 $781$ は $-1\equiv1104$ でないので、底 $2$ で判定を通過しない。よって $1105$ は合成数である。さらに $781^2\equiv1$、$781\not\equiv\pm1$ から、$\gcd(780,1105)=65$、$\gcd(782,1105)=17$ という約数が得られる。

合成数 $2047$:底 $2$ は通過し、底 $3$ は通過しない

$2047=23\cdot89$ では $2046=2\cdot1023$ で、$s=1$、$t=1023$ である。底 $2$ については $2^{11}=2048\equiv1$ なので $2^{1023}=(2^{11})^{93}\equiv1\pmod{2047}$ で、条件 1 により判定を通過する。$2047$ は底 $2$ の強擬素数のうち最小のものである(擬素数 の記事の節「より強い擬素数」)。一方、底 $3$ では $3^{1023}\equiv1565\pmod{2047}$ で $\pm1$ でなく、$s=1$ なので調べる項はこれだけである。したがって底 $3$ で合成数と分かる。$L(2047)$ の元は $242$ 個で、$(2047-1)/4=511.5$ 以下である。

合成数 $9$:上界が等号になる

$n=9$ では $8=2^3$ で、$s=3$、$t=1$ である。条件 1 を満たすのは $a=1$ だけである。条件 2 の $a\equiv-1$ を満たすのは $a=8$ である。$9$ と互いに素な $a$ の平方は $1,4,7$ のどれかで、4 乗は $1,7,4$ のどれかなので、$a^2\equiv-1$ や $a^4\equiv-1$ となる $a$ はない。したがって $L(9)=\{1,8\}$ で、$\lvert L(9)\rvert=2=(9-1)/4$ である。thm-mr-quarter の上界 $(n-1)/4$ は、これ以上小さくできない。

いくつかの奇数の合成数 $n$ について、Fermat の条件 $a^{n-1}\equiv1\pmod n$ を満たす底の個数 $\lvert B(n)\rvert$(擬素数 の記事の定義「擬素数にする底の集合」)と、$\lvert L(n)\rvert$ を比べる(計算機による)。

$n$素因数分解$\varphi(n)$$\lvert B(n)\rvert$$\lvert L(n)\rvert$$(n-1)/4$
$9$$3^2$$6$$2$$2$$2$
$25$$5^2$$20$$4$$4$$6$
$91$$7\cdot13$$72$$36$$18$$22.5$
$341$$11\cdot31$$300$$100$$50$$85$
$561$$3\cdot11\cdot17$$320$$320$$10$$140$
$703$$19\cdot37$$648$$324$$162$$175.5$
$1105$$5\cdot13\cdot17$$768$$768$$30$$276$
$1729$$7\cdot13\cdot19$$1296$$1296$$162$$432$
$2047$$23\cdot89$$1936$$484$$242$$511.5$

Carmichael 数 $561$、$1105$、$1729$ では $B(n)$ が既約剰余類全体になるのに対し、$L(n)$ はその一部にすぎない。素数冪 $9,25$ では $L(n)=B(n)$ である。

素数はどの底でも通過する

1 の平方根

$p$ を奇素数、$e\ge1$ とする。$x^2\equiv1\pmod{p^e}$ なら $x\equiv1$ または $x\equiv-1\pmod{p^e}$ である。

2 つの因数の公約数を見る

$p^e\mid x^2-1=(x-1)(x+1)$ である。$p$ が $x-1$ と $x+1$ の両方を割るなら、差の $2$ も割るが、$p$ は奇数なので起こらない。よって $p$ はどちらか一方とは互いに素であり、$p^e$ はもう一方を割る。$\square$

奇素数の冪という仮定は外せない。$n=15$ では $4^2=16\equiv1$ だが $4\not\equiv\pm1\pmod{15}$ であり、$n=8$ では $3^2=9\equiv1$ だが $3\not\equiv\pm1\pmod 8$ である。

素数は判定を通過する

$n\ge3$ が素数なら、$L(n)=\{1,2,\dots,n-1\}$ である。したがって Miller–Rabin 素数判定法は、素数に対して必ず「おそらく素数」と出力し、「合成数」という出力は常に正しい。

最初に 1 になる項の一つ前を見る

$1\le a\le n-1$ とすると、$n$ は素数なので $n\nmid a$ であり、Fermatの小定理 により $a^{2^st}=a^{n-1}\equiv1\pmod n$ である。$a^t\equiv1$ なら条件 1 を満たす。そうでなければ、$a^{2^jt}\equiv1$ となる $j\in\{0,1,\dots,s\}$ のうち最小のものを $j_0$ とすると $j_0\ge1$ である。$x:=a^{2^{j_0-1}t}$ とおくと $x^2=a^{2^{j_0}t}\equiv1$ なので、lem-mr-square-roots($e=1$)により $x\equiv\pm1$ である。$j_0$ の最小性から $x\not\equiv1$ なので $x\equiv-1$ であり、$j:=j_0-1\le s-1$ について条件 2 が成り立つ。
後半:$n$ が素数ならどの回で選んだ $a$ も $L(n)$ に入るので、どの回も通過し、出力は「おそらく素数」である。対偶をとると、「合成数」と出力されたなら $n$ は合成数である。$\square$

合成数を見逃す底は 4 分の 1 以下

この節の主定理は、Carmichael 数のような「すべての底で通過する合成数」が Miller–Rabin の条件には存在しないこと、しかも通過する底が全体の 4 分の 1 以下であることを述べる。

判定を通過する底の個数

$n\ge3$ を奇数の合成数とし、$n=p_1^{e_1}\cdots p_r^{e_r}$($p_i$ は相異なる奇素数、$e_i\ge1$)と素因数分解する。

  1. $r=1$、すなわち $n=p^e$($e\ge2$)なら、$\lvert L(n)\rvert\le p-1\le\dfrac{n-1}{p+1}\le\dfrac{n-1}4$ である。
  2. $r\ge2$ なら、$\lvert L(n)\rvert\le\dfrac{\varphi(n)}4$ である。$r\ge3$ なら、さらに $\lvert L(n)\rvert\le\dfrac{\varphi(n)}{2^{r-1}}$ である。
    いずれの場合も $\lvert L(n)\rvert\le\dfrac{n-1}4$ である。
部分群を挟んで個数を数える

$G:=(\mathbb Z/n\mathbb Z)^\times$、$G_i:=(\mathbb Z/p_i^{e_i}\mathbb Z)^\times$ とおき、$\varphi_i:=\lvert G_i\rvert=p_i^{e_i-1}(p_i-1)$ と書く。def-mr-condition のあとに述べたとおり $L(n)\subset G$ とみなせる。中国剰余定理 により、$a\bmod n\mapsto(a\bmod p_1^{e_1},\dots,a\bmod p_r^{e_r})$ は群の同型 $G\cong G_1\times\cdots\times G_r$ を与える。$p_i$ は奇素数なので、各 $G_i$ は位数 $\varphi_i$ の 巡回群 である(原始根 の記事の定理「原始根が存在する法」)。$a\in G$ の $G_i$ への成分を $a_i$ と書く。
段 1($r=1$ の場合). $n=p^e$、$e\ge2$ とする。$a\in L(n)$ なら $a^{n-1}\equiv1\pmod n$ なので、$L(n)$ は 擬素数 の記事の定義「擬素数にする底の集合」の $B(n)$ に含まれる。同記事の定理「擬素数にする底の個数」により $\lvert B(n)\rvert=\gcd(p-1,n-1)$ であり、$n-1=p^e-1$ は $p-1$ の倍数なので、これは $p-1$ に等しい。また $n-1=(p-1)(1+p+\cdots+p^{e-1})$ で、$e\ge2$ から $1+p+\cdots+p^{e-1}\ge1+p$ なので、$p-1\le(n-1)/(p+1)\le(n-1)/4$ である($p\ge3$)。
以下 $r\ge2$ とする。
段 2(指数 $m$ の選び方). $t$ は奇数なので $(-1)^t=-1$ であり、$a=-1\in G$ について $a^{2^0t}\equiv-1$ が成り立つ。そこで、ある $a\in G$ について $a^{2^jt}\equiv-1\pmod n$ となる $j\in\{0,1,\dots,s-1\}$ のうち最大のものを $\nu$ とし、$m:=2^\nu t$ とおく。$a^m\equiv-1\pmod n$ を満たす $b\in G$ を 1 つ固定する。
段 3($L(n)$ を含む部分群 $H$). $H:=\{a\in G\mid a^m\equiv\pm1\pmod n\}$ とおく。$a\in L(n)$ とする。条件 1 の $a^t\equiv1$ なら $a^m=(a^t)^{2^\nu}\equiv1$ である。条件 2 の $a^{2^jt}\equiv-1$($0\le j\le s-1$)なら、$\nu$ の最大性から $j\le\nu$ であり、$j=\nu$ なら $a^m\equiv-1$、$j<\nu$ なら $a^m=(a^{2^jt})^{2^{\nu-j}}\equiv1$ である。よって $L(n)\subset H$ である。$a^m,c^m\in\{\pm1\}$ なら $(ac)^m=a^mc^m\in\{\pm1\}$ なので、$H$ は積で閉じた有限群 $G$ の空でない部分集合であり、部分群である(各元の冪は有限個しかないので、逆元もその冪として $H$ に入る)。
段 4(各成分での個数). $g_i:=\gcd(m,\varphi_i)$ とおく。$G_i$ で $b_i^m=-1$ かつ $b_i^{2m}=1$ であり、$p_i$ は奇数なので $G_i$ で $-1\ne1$ である。したがって $b_i$ の位数は $2m$ を割るが $m$ を割らない。$m=2^\nu t$($t$ は奇数)なので、位数を割る $2$ の冪はちょうど $2^{\nu+1}$ であり、位数は $\varphi_i$ を割るから、$2^{\nu+1}\mid\varphi_i$ である。
擬素数 の記事の補題「巡回群で $x^k=1$ を満たす元の個数」により、$x^m=1$ を満たす $x\in G_i$ はちょうど $g_i$ 個ある。$x^m=-1$ を満たす $x\in G_i$ 全体は、$b_i$ と「$x^m=1$ を満たす元の全体」の積の集合($x\mapsto b_ix$ による像)に等しいので、これもちょうど $g_i$ 個ある。さらに $x^m=\pm1$ と $x^{2m}=1$ は同値である($x^{2m}=1$ なら $y=x^m$ は $y^2=1$ を満たし、lem-mr-square-roots により $y=\pm1$)。$2m$ と $\varphi_i$ はどちらも $2^{\nu+1}$ で割り切れ、$2m$ は $2^{\nu+2}$ で割り切れないので、$\gcd(2m,\varphi_i)=2\gcd(m,\varphi_i)=2g_i$ である。よって $x^m=\pm1$ を満たす $x\in G_i$ はちょうど $2g_i$ 個ある。
段 5($H$ を含む部分群 $J$). $J:=\{a\in G\mid\text{すべての }i\text{ について }a_i^m=\pm1\}$ とおく。段 3 と同じ理由で $J$ は $G$ の部分群であり、$H\subset J$ である。中国剰余定理による同型と段 4 から、
$$ \lvert J\rvert=\prod_{i=1}^r2g_i=2^r\prod_{i=1}^rg_i $$
である。一方、$a^m\equiv1\pmod n$ はすべての $i$ で $a_i^m=1$ となることと、$a^m\equiv-1\pmod n$ はすべての $i$ で $a_i^m=-1$ となることと同値なので、
$$ \lvert H\rvert=\prod_{i=1}^rg_i+\prod_{i=1}^rg_i=2\prod_{i=1}^rg_i=\frac{\lvert J\rvert}{2^{r-1}} $$
である。以上から
$$ \lvert L(n)\rvert\le\lvert H\rvert=\frac{\lvert J\rvert}{2^{r-1}}\le\frac{\varphi(n)}{2^{r-1}} $$
を得る。$r\ge3$ ならこれで 2 の主張が示され、$2^{r-1}\ge4$ なので $\lvert L(n)\rvert\le\varphi(n)/4$ でもある。
段 6($r=2$ の場合). $J\ne G$ を示す。$J=G$ と仮定すると、すべての $x\in G_i$ が $x^{2m}=1$ を満たす。$G_i$ は位数 $\varphi_i$ の巡回群なので、生成元を考えて $\varphi_i\mid2m$ である。$\nu\le s-1$ なので $2m=2^{\nu+1}t$ は $2^st=n-1$ を割り、$p_i^{e_i-1}(p_i-1)=\varphi_i\mid n-1$ となる。$p_i\mid n$ なので $p_i\nmid n-1$ であり、$e_i=1$ でなければならない。よって $n=p_1p_2$ で、$p_1-1\mid n-1$、$p_2-1\mid n-1$ である。ところが
$$ n-1=p_1p_2-1=(p_1-1)p_2+(p_2-1) $$
なので $p_1-1\mid p_2-1$ であり、$p_1,p_2$ を入れ替えた式から $p_2-1\mid p_1-1$ でもある。したがって $p_1=p_2$ となり、相異なることに反する。よって $J$ は $G$ の真の部分群であり、Lagrangeの定理 により $\lvert J\rvert\le\varphi(n)/2$ である。段 5 の不等式($r=2$)から $\lvert L(n)\rvert\le\lvert J\rvert/2\le\varphi(n)/4$ である。
段 7(まとめ). $r\ge2$ のとき、$1\le p_1\le n-1$ は $n$ と互いに素でないので $\varphi(n)\le n-2< n-1$ であり、$\lvert L(n)\rvert\le\varphi(n)/4<(n-1)/4$ である。$r=1$ の場合は段 1 で示した。$\square$

この定理と証明の方針(Miller–Rabin の条件を満たす底が、冪写像の核から作った部分群に入ることを使い、中国剰余定理で成分ごとに数える)は Sho08 §10.2、Theorem 10.3(pp. 309–310)にある。同書は $\nu$ の代わりに、$n-1$ と各 $\varphi_i$ を割る 2 の冪の最小の指数を使っている。上の証明は $-1$ が現れうる最大の段 $\nu$ を使い、$r=2$ の場合を段 6 のように $J\ne G$ を示して扱う(同書はこの場合に、Carmichael 数が 3 個以上の素因数をもつことを使う)。段 6 の後半は、Carmichael数 の記事の命題「Carmichael数の素因数」の 2(Carmichael 数は相異なる素因数を 3 個以上もつ)と同じ種類の議論である。

$703=19\cdot37$:証明の数え方で等号になる

$702=2\cdot351$ なので $s=1$、$t=351$ で、条件 2 で使えるのは $j=0$ だけである。したがって $\nu=0$、$m=351$ であり、$L(703)=\{a\mid a^{351}\equiv\pm1\}=H$ となる。$\varphi_1=18$、$\varphi_2=36$ で、$g_1=\gcd(351,18)=9$、$g_2=\gcd(351,36)=9$ なので、段 5 により $\lvert L(703)\rvert=\lvert H\rvert=2\cdot9\cdot9=162$ である。これは $\varphi(703)/4=648/4$ にちょうど等しい。$r=2$ のときの上界 $\varphi(n)/4$ も、これ以上小さくできない。

誤り確率と手間

合成数を見逃す確率

奇数 $n\ge3$ とくり返しの回数 $k\ge1$ について、Miller–Rabin 素数判定法(def-mr-algorithm)は次を満たす。

  1. $n$ が素数なら、確率 $1$ で「おそらく素数」と出力する。
  2. $n$ が合成数なら、「おそらく素数」と出力する確率は $4^{-k}$ 以下である。
独立な試行の積

1 は thm-mr-prime である。2:各回の $a$ は $\{1,\dots,n-1\}$ から一様に選ばれるので、その回が通過する確率は $\lvert L(n)\rvert/(n-1)$ であり、thm-mr-quarter により $1/4$ 以下である。「おそらく素数」と出力されるのは $k$ 回とも通過したときに限り、各回の選び方は独立なので、その確率は $\bigl(\lvert L(n)\rvert/(n-1)\bigr)^k\le4^{-k}$ である。$\square$

1 回の判定の手間

$\ell:=\operatorname{len}(n)$ を $n$ の 2 進法での桁数とする。底 $a$ について $a\in L(n)$ かどうかは、法 $n$ での掛け算 $2\ell$ 回以下、したがって時間 $O(\ell^3)$ で判定できる。Miller–Rabin 素数判定法全体の手間は $O(k\ell^3)$ である。

反復二乗法の回数を数える

$n-1=2^st$ なので、$n-1$ の 2 進法の桁数は $\operatorname{len}(t)+s$ であり、$\ell$ 以下である($s$ と $t$ は $n-1$ の 2 進表示の末尾の $0$ を数えれば求まる)。計算整数論 の記事の定理「反復二乗法の正しさと手間」により、$a^t\bmod n$ は法 $n$ での掛け算 $2\operatorname{len}(t)$ 回以下で求まる。そのあと 2 乗を高々 $s-1$ 回行うので、掛け算は合わせて $2\operatorname{len}(t)+s-1<2\ell$ 回以下である。各回の掛け算と $n$ で割った余りの計算は、$n$ 未満の数どうしなので時間 $O(\ell^2)$ である(同記事の注意「基本演算の手間(この記事では証明しない)」)。よって 1 回の判定は $O(\ell^3)$ であり、それを $k$ 回くり返すので全体は $O(k\ell^3)$ である。$\square$

cor-mr-error の確率は、合成数 $n$ を 1 つ固定したときに「おそらく素数」と誤る確率である。「おそらく素数」と出力されたという条件のもとで $n$ が実は合成数である確率は、これとは別の量で、$n$ がどのように選ばれたかによる。たとえば $2$ から $M$ までの整数を無作為に選んでは判定にかけ、最初に「おそらく素数」と出た数を出力するという素数の生成法では、出力が合成数である確率は $4^{-k}(M-1)/\pi(M)$ 以下である(Sho08 §10.3.1、式 (10.5)、p. 312。この記事では証明しない)。ここで $\pi(M)$ は $M$ 以下の素数の個数で、$(M-1)/\pi(M)$ は $\log M$ 程度の大きさである(素数定理)。

強擬素数は無限にある

thm-mr-quarter は、1 つの合成数を通過させる底が少ないことを述べるが、決まった底を通過する合成数が少ないことは述べていない。実際、底を 1 つ固定すると、それを通過する合成数は無限にある。

底 $2$ の擬素数から底 $2$ の強擬素数を作る

奇数の合成数 $n$ が底 $2$ の擬素数($2^{n-1}\equiv1\pmod n$)なら、$M:=2^n-1$ は底 $2$ の強擬素数であり、$M>n$ である。したがって底 $2$ の強擬素数は無限に存在する。

$M-1$ を割る 2 の冪が 1 つだけであることを使う

$M$ が合成数であることと $M>n$ は、擬素数 の記事の定理「擬素数 $n$ から $2^n-1$ を作る」の証明の前半による($n=rs'$、$1< r< n$ と分けると $2^r-1$ が $M$ の自明でない約数になる)。$M$ は奇数で、$M-1=2^n-2=2(2^{n-1}-1)$ であり、$n\ge2$ なので $2^{n-1}-1$ は奇数である。よって $M$ について $s=1$、$t=2^{n-1}-1$ である。仮定から $n\mid2^{n-1}-1=t$ なので $t=nq$ と書ける。$2^n=M+1\equiv1\pmod M$ なので、
$$ 2^t=(2^n)^q\equiv1\pmod M $$
であり、def-mr-condition の条件 1 により $M$ は底 $2$ の強擬素数である。
$341=11\cdot31$ は底 $2$ の擬素数なので、$n_0:=341$、$n_{i+1}:=2^{n_i}-1$ と定めると、$n_{i+1}$ は底 $2$ の強擬素数であり、とくに底 $2$ の擬素数でもある(擬素数 の記事の命題「強い条件は Fermat の条件を含む」)。よって帰納的に、$n_1< n_2<\cdots$ はすべて底 $2$ の強擬素数である。$\square$

この命題は Cri24 Theorem 12.4.2(pp. 196–197)と Corollary 12.4.4(p. 197)にある。同書は Theorem 12.4.6(p. 197)として thm-mr-quarter の $(n-1)/4$ の上界を述べ、証明は省いている。
決まった底の組でも事情は同じである。底 $2$ と底 $3$ の両方で判定を通過する奇数の合成数のうち最小のものは $1373653=829\cdot1657$ であり、底 $2,3,5$ のすべてで通過するもののうち最小のものは $25326001=2251\cdot11251$ である(計算機による)。$1373653$ は底 $5$ では通過しない($1373652=2^2\cdot343413$ で、$5^{343413},5^{2\cdot343413}$ はどちらも法 $1373653$ で $\pm1$ でない)。逆に言えば、$1373653$ 未満の奇数 $n\ge5$ は、底 $2$ と底 $3$ の判定だけで素数かどうかが確定する。

条件を外した反例

外す条件反例成り立たなくなること
lem-mr-square-roots の「法が奇素数の冪」$n=15$、$x=4$$x^2\equiv1$ なら $x\equiv\pm1$
$-1$ が現れるかを調べる(Fermat の条件 $a^{n-1}\equiv1$ だけを調べる)$n=561$通過する底が $(n-1)/4$ 個以下
底を毎回無作為に選ぶ(底を $2,3$ に固定する)$n=1373653$合成数なら「合成数」と判定される確率が $1-4^{-k}$ 以上
thm-mr-quarter の「合成数」$n=97$(素数)通過する底が $(n-1)/4$ 個以下
上界を $(n-1)/4$ より小さい $c(n-1)$($c<1/4$)にする$n=9$$\lvert L(n)\rvert\le c(n-1)$
反例の確認

1 行目:$4^2=16\equiv1\pmod{15}$ で $4\not\equiv\pm1$ である。$15$ は奇素数の冪でなく、prf-mr-square-roots の「$p$ が $x-1$ と $x+1$ の一方とは互いに素」が、$3\mid4-1$、$5\mid4+1$ のように素因数ごとに別の因数を割ることで破れている。2 行目:$561$ は Carmichael数 なので、Fermat の条件を満たす底は $561$ と互いに素な $320$ 個すべてで、$(561-1)/4=140$ を超える。一方 $\lvert L(561)\rvert=10$ である(上の例の表)。3 行目:上の段落のとおり $1373653$ は合成数で底 $2,3$ の両方で通過するので、底を $2,3$ に固定した判定は確率 $1$ で「おそらく素数」と誤る。cor-mr-error は底を無作為に選ぶことを使っている。4 行目:thm-mr-prime により $L(97)$ は $96$ 個すべてで、$96/4=24$ を超える。5 行目:ex-mr-9 により $\lvert L(9)\rvert=2=(9-1)/4>c\cdot8$ である。

補足

決定的な判定と一般化された Riemann 予想

Miller は、一般化された Riemann 予想を仮定すると、合成数 $n$ について $L(n)$ に入らない最小の底が $O((\log n)^2)$ 以下であることを示し、仮定のもとで正しい決定的な判定法を与えた。Bach はこの上界を $2(\log n)^2$ と具体的にした(Sho08 §10.5、pp. 324–325。この記事では証明しない)。仮定を使わない決定的な多項式時間の判定法としては Agrawal–Kayal–Saxena の方法があり(計算整数論 の記事の節「補足」)、理論上は重要だが、実用には手間の小さい Miller–Rabin 素数判定法が広く使われる。

名前と歴史

条件 def-mr-condition を使う判定は Miller によるもので、Rabin がそれを確率的な算法として捉え直した(Sho08 §10.5、p. 324)。Cri24 §12.3.2(p. 195)は 1 つの底についての判定を「Miller の判定」(Miller's test)と呼んでいる。英語では Miller–Rabin test、Rabin–Miller test とも呼ばれる。Fermat の条件に Jacobi 記号を組み合わせた判定法(Solovay–Strassen の判定法)では、合成数を見逃す底が既約剰余類の半分以下であることが知られている(Jacobi記号 の記事の定理「Euler–Jacobi の判定の誤り率」)。

関連項目

参考文献

Mathpediaは寄付と、参考文献の書籍リンク(Amazonアソシエイト)の紹介料で運営されています。 支援について / 寄付する