論文翻譯:《PRIMES is in P》——素性測試的確定性多項式時間算法研究


本論文給出AKS素性測試算法。

PRIMES is in P

本文作者:Manindra Agrawal, Neeraj Kayal, Nitin Saxena.

概要

我們將在文中給出一種素性檢測的確定性多項式時間算法(AKS算法)。

第一部分:介紹

關於素數的研究通常是數學中最重要的部分之一,尤其在數論中。所以研究素數的不同性質是非常有趣的,尤其是那些可以有效地判定一個數是否是素數的那些性質。同樣,這些有效的素性測試算法是非常實用的,例如許多加密協議需要用到大素數。

記PRIMES為所有素數構成的集合。素數的定義已經自然地給出了一種用於判斷正整數\(n\)是否為素數的方法:枚舉每一個整數\(2\le m\le \sqrt n\),如果存在上述的任意一個\(m\)整除\(n\),則\(n\)為合數,否則\(n\)是素數。這種素性測試的方法在古希臘時期就已經被人們所知——它是埃拉托色尼篩選法(埃氏篩法)的一個特例,它能夠得到小於\(n\)的所有素數。然而埃氏篩法的效率並不高,若要判斷\(n\)是否是一個素數,所需的時間開銷是\(\Omega(\sqrt n)\)的。一個高效的算法應該能夠在多項式時間內(輸入規模是\(\lceil \log n\rceil\))完成測試。費馬小定理幾乎直接給出了一種高效的測試算法:

費馬小定理(Fermat's Little Theorem):

對於任意素數\(p\),若\(a\)不是\(p\)的倍數,則\(a^{p-1}\equiv 1({\rm mod\ } p)\)

對於給定的\(a\)\(n\),通過反復平方計算出\(a^{n-1}\),可以高效地檢測等式\(a^{n-1}\equiv 1({\rm mod\ }n)\)是否成立。然而,由於一些合數\(n\)和部分整數\(a\)也能滿足等式\(a^{n-1}\equiv 1({\rm mod\ }n)\)(這些\(n\)稱作卡邁克爾數,Carmichael numbers),因此費馬素性檢驗不是一個正確的素性測試算法。盡管如此,費馬小定理仍然是許多素性檢驗算法的基礎。

在計算復雜性理論初步形成的1960年代,計算復雜度的概念基本確定,並且在其中定義了許多復雜度類。在此時期,素性測試問題被深入地研究。並且該問題屬於co-NP類:要證明\(n\)不是素數,只需指出\(n\)的一個非平凡的因子。在1974年,V.R.Pratt發現素性測試問題也是屬於NP類的。(因此該問題屬於NP\(\cap\)co-NP).

1975年,Miller基於費馬小定理和廣義黎曼猜想得到了一種素性檢驗的確定性多項式時間算法,不久后,他的算法被Rabin做出了一些修改,得到了一種無條件的、隨機化的多項式時間算法。另外,Solovay和Strassen在1974年也提出了一種不同的隨機化多項式時間算法。

Solovay-Strassen素性測試:

對於一個素數\(n\)和滿足\(1\le a\le N\)的整數\(a\),滿足:

\[(\frac {a}{n})\equiv a^{\frac {n-1}2}({\rm mod \ n}) \]

這里的\((\frac{\ }{})\)代表雅可比符號

譯者注:雅可比符號定義詳見這里

他們的算法在廣義黎曼猜想的前提下也是確定性的。之后,許多基於不同性質的隨機化多項式時間素性檢驗算法被提出。

1983年,Adleman, Pomerance和Rumely達成了一個重大突破:給出了一個時間復雜度為\((\log n)^{O(\log \log \log n)}\)的確定性素性檢驗算法(在此之前,所有的確定性算法都需要指數時間)。他們的算法概括了Miller的思想,並且使用了Higher reciprocity laws(這個沒有找到好的翻譯,大概是互反律?)1986年,Goldwasser和Kilian提出了一種基於橢圓曲線的隨機化算法,這種算法對於幾乎所有輸入的期望時間復雜度都是多項式級別(普遍猜想該算法對所有輸入都可以在多項式時間內求解)。算法會生成簡短的證書(certificate),通過這個證書可以簡單地驗證\(n\)是否為素數(在此之前所有的隨機算法只能生成用於驗證一個數\(n\)是否為合數的證書),基於他們的思想,Atkin提出了一種相似的算法。Adleman和Huang修改了Goldwasser-Kilian算法,得到一種對於所有輸入的期望時間復雜度都在多項式級別的隨機化算法。

這一系列研究的最終目標,當然是為了得到一種無條件的確定性多項式時間素性檢驗算法。盡管一直以來這方面研究得到了重大的進展,這個最終目標仍然難以達成。在這篇論文中,我們實現了這個目標。我們給出了一個確定性的,時間復雜度為\(O^{\sim}(\log^{15/2} n)\)的素性檢驗算法。一個啟發性的結果是,我們的算法效果確實更好:假設蘇菲·姬曼(Sophie Germain)的素數密度猜想成立,算法只需
\(O^{\sim}(\log ^6 n)\)步就可完成。

蘇菲·姬曼(Sophie Germain)素數密度猜想:

\(p\)是素數,則\(2p+1\)也是素數。

我們的算法是費馬小定理在有限域多項式環上的推廣,值得注意的是,對它正確性的證明只需要簡單的代數工具(關於“滿足\(p-1\)有大素數因子的素數\(p\)的密度”的篩法理論結果除外——實際上如果只證明一個更松的\(O^{\sim}(\log ^{21/2}n)\)的復雜度上界,就可以不需要篩法理論結果)。相比之下,之前的算法,如Adleman-Pomerance-Rumely算法,Goldwasser-Kilian算法,Atkin算法的正確性證明要復雜得多。

在文章第二部分,我們總結了算法背后的基本思想;第三部分,我們規定了之后使用的記號;第四部分描述算法並給出了正確性證明;第五部分,分析算法時間復雜度的界限;第六部分探討進一步優化復雜度的途徑。

第二部分:算法基本思想

我們的素數判別法基於以下的素數恆等式,這個恆等式可以看作是費馬小定理的推廣,是[AB]種隨機多項式時間算法的基礎。

引理2.1:設\(a\in {\mathbb Z},n\in {\mathbb N},n\ge 2\)\((a,n)=1\),則\(n\)是素數當且僅當

\[\begin{equation}(X+a)^n\equiv X^n+a({\rm mod\ }n) \tag {1} \end{equation} \]

證明:對於\(0<i<n\),在 \(((X+a)^n-(X^n+a))\)中, \(x^i\)項的系數是 \(\left(\begin{array}{c}n\\i\end{array}\right)a^{n-i}\).

假設\(n\)為素數,則\(\left(\begin{array}{c}n\\i\end{array}\right)\equiv 0({\rm mod}\ n)\),於是所有系數都為\(0\)

\(n\)為合數,考察\(n\)的一個素因子\(q\),且設\(q^k||n\)。由於\((a,n)=1\),則\((a,q)=1\),於是\(a^{n-q}\)\(q\)互素,且\(q^k\)不整除\(\left(\begin{array}{c}n\\q\end{array}\right)\).

於是\(q^k\not | \left(\begin{array}{c}n\\q\end{array}\right)a^{n-q}\)\(n\not | \left(\begin{array}{c}n\\q\end{array}\right)a^{n-q}\),即\(\left(\begin{array}{c}n\\q\end{array}\right)a^{n-q}\ne0\)在模\(n\)意義下成立。因此\(((X+a)^n-(X^n+a))\)在模\(n\)意義下不等於\(0\),於是在模\(n\)意義下\((X+a)^n\ne X^n+a\),證畢。

引理2.1給出了一個簡單的素性檢驗方法:對於給定的輸入\(n\),任選一個\(a\)然后計算同余式(1)是否成立。然而在最壞情況下,同余式左邊需要計算\(n\)個系數的值,所需時間開銷\(\Omega(n)\).減少多項式項數的一個簡單方法是在(1)的兩側同時模去形為\(X^r-1\)的多項式,\(r\)選擇一個合適的較小數。也就是說,檢驗以下等式是否成立

\[(X+a)^n\equiv X^n+a({\rm mod\ }X^r-1,n).\tag{2} \]

由引理2.1,對於任意\(r,a\),所有素數\(n\)都滿足同余式(2).問題在於,對於\(r\)\(a\),一些合數\(n\)也可能滿足方程(事實上確實是這樣)。但我們可以做出如下的修訂:對於適當選擇的\(r\),如果(2)對某些\(a\)成立,則\(n\)必定為素數的冪。\(a\)\(r\)的數量可以由關於\(\log n\)的對數多項式來限定,因此我們得到一個素性測試的確定性多項式時間算法。

第三部分:規定記號

P類是指所有可以由一個確定型圖靈機在多項式時間內解決的問題構成的集合;關於NP類,co-NP類的定義見[Lee].

\(Z_n\)代表模\(n\)整數環,\(F_p\)表示具有\(p\)個元素的有限域,其中\(p\)是素數。我們先回憶一個事實:如果\(p\)是素數,\(h(X)\)\(F_p\)上的\(d\)次不可約多項式,則\(F_p[X]/(h(X))\)\(p^d\)階的有限域,我們使用記號\(f(X)\equiv g(X)({\rm mod\ }h(X,n))\)來表示在環\(Z_n[X]/(h(X))\)\(f(X)=g(X)\).我們用符號\(O^{\sim }(t(n))\)來表示\(O(t(n)\cdot {\rm poly}(\log t(n)))\),其中\(t(n)\)是關於\(n\)的任意函數。例如:

\[O^{\sim }(\log ^k n)=O(\log ^k n\cdot {\rm poly}(\log\log n))=O(\log ^{k+\epsilon}n), \forall \epsilon>0 \]

\(\log\)代表以\(2\)為底的對數,\(\ln\)表示以\(e\)為底的自然對數。

\({\mathbb N,Z}\)分別表示自然數集和整數集。對於給定的\(r\in {\mathbb N},a\in {\mathbb Z},(a,r)=1\)\(a\)\(r\)的階為滿足\(a^k\equiv 1({\rm mod} \ r)\)的最小數\(k\),我們將其記作\(o_r(a)\).

對於\(r\in {\mathbb N},\phi(r)\)為歐拉函數,\(\phi(r)\)的值表示小於\(r\)並且與\(r\)互素的數的數量。易知\(\forall a,(a,r)=1\),有\(o_r(a)|\phi(r)\).

我們需要以下的簡單事實:

引理3.1:以\(LCM(m)\)表示前\(m\)個數的最小公倍數,當\(m\ge 7\)時,\(LCM(m)\ge 2^m\).

第四部分:算法描述和正確性證明

偽碼描述:

輸入:大於1的整數\(n\)

  1. \(if (n=a^b\ for\ a\in {\mathbb N}\ and b>1) ,\ output {\rm\ COMPOSITE}.\)

  2. \(Find\ the\ smallest\ r\ such\ that\ o_r(n)>\log^2n).\)

  3. \(if(1<(a,n)<n\ for\ some\ a\le r),\ output\ {\rm COMPOSITE.}\)

  4. \(if(n\le r),\ output\ {\rm PRIME}\).

  5. \(for\ a=1\ to \lfloor\sqrt{\phi(r)}\log n\rfloor\ do:\\ \quad \quad if((X+a)^n\ne X^n+a({\rm mod\ }X^r-1,n)),\ output\ {\rm COMPOSITE;}\)

  6. \(output \ {\rm PRIME.}\)

素性判定算法

定理4.1:上述算法返回PRIME,當且僅當\(n\)為素數。

我們通過一系列的引理來證明這個定理。

引理4.2:如果\(n\)是素數,算法返回PRIME.(充分性)

證明:若\(n\)為素數,則第1,3步不會返回COMPOSITE.由引理2.1,for循環也不會返回COMPOSITE.因此該算法將會在第4步或第6步判定\(n\)是一個素數,證畢。

要證明以上引理的逆命題(必要性)則相對費勁一些。如果算法在第4步返回了PRIME,則\(n\)一定是素數,否則第3步就會找到\(n\)的一個非平凡的因子,因此我們只需要討論算法在第6步返回PRIME的情況。

算法具有兩個主要步驟(第2步和第5步):第2步找到一個合適的\(r\),第5步對於某些\(a\),驗證等式(2)是否成立。首先我們要找到這個合適的\(r\)的上界。

引理4.3\(\exists r \le \max\{3,\lceil \log^5 n\rceil\}\),使得\(o_r(n)>\log^2 n.\)

證明

\(n=2\)時,令\(r=3\),有:\(o_3(2)=2>\log^2 2=1\),滿足條件。

\(n>2\)時,\(\lceil \log ^5n\rceil>10\).設\(r_1,r_2,\cdots,r_t\)是所有滿足\(o_{r_i}\le \log ^2n\)\(r_i|n\)的數,則所有這樣的\(r_i\)必定能夠整除以下乘積

\[n\cdot\prod_{i=1}^{\lfloor \log^2n\rfloor}(n^i-1)<n^{\log^4n}\le 2^{\log ^n} \]

由引理3.1,前\(\lceil\log^5n\rceil\)個數的公倍數至少為\(2^{\lceil\log^5n\rceil}\),而\(r_1,r_2,\cdots,r_t\)的最小公倍數小於\(n\cdot\prod_{i=1}^{\lfloor \log^2n\rfloor}(n^i-1)\),故\(\exists s\le \lceil\log^5n\rceil\)使得\(s\notin \{r_1,r_2,\cdots,r_t\}.\)

\((s,n)=1\),則\(o_s(n)>\log^2n\)\(s\)即為所求

\((s,n)\ne 1\),因為\(s\)不整除\(n\),且\((s,n)\in \{r_1,r_2,\cdots,r_t\}\).\(r=\frac s{(s,n)}\notin \{r_1,r_2,\cdots,r_t\}\),所以\(o_r(n)>\log ^2n\).

由於\(o_r(n)>1\),則必存在\(n\)的一個素因子\(p\),使得\(o_r(p)>1\).我們有\(p>r\),否則在第3,第4步就可以判定\(n\)是否是素數。因為\((r,n)=1\)(如若不然,在第三步或第四步就可以判定\(n\)是否是素數),因此\(p,n\in Z_r^*\)

\(l=\lfloor\sqrt{\phi(r)}\log n\rfloor\).算法第五步,驗證\(l\)個方程。因為算法在此步不輸出COMPOSITE,所以有:

\[(X+a)^n\equiv X^n+a({\rm mod}\ X^r-1,n) \]

對於任意的\(a,0\le a\le l\)(平凡地,\(a=0\)顯然成立),可知:

\[(X+a)^n\equiv X^n+a({\rm mod\ }X^r-1,p)\tag{3} \]

對於\(\forall a, 0\le a\le l\),由引理2.1,我們有:

\[(X+a)^p\equiv X^p+a({\rm mod\ }X^r-1,p)\tag{4} \]

對於\(\forall a, 0\le a\le l\),由方程(3)和(4),我們有:

\[(X+a)^{\frac np}\equiv X^{\frac np}+a({\rm mod\ }X^r-1,p)\tag{5} \]

對於\(\forall a, 0\le a\le l\),在上面的方程中,\(n\)\(n/p\)的性質類似於素數\(p\),我們對於以上的等式性質給出一個定義:

定義4.4:對於多項式\(f(X)\)和整數\(m\in {\mathbb N}\),如果:

\[[f(X)]^m\equiv f(X^m)({\rm mod \ }X^r-1,p) \]

則我們稱\(m\)\(f(X)\)自省數

由方程(5)和(4),我們可以看出,當\(0\le a\le l\)時,\(p\)\(n/p\)都是\(X+a\)的自省數。

接下來的引理證明了自省數在乘法下封閉。

引理4.5:如果\(m\)\(m'\)\(f(X)\)的自省數,則\(m\cdot m'\)也是\(f(X)\)的自省數。

證明:由於\(m\)\(f(X)\)的自省數,我們有:

\[[f(X)]^{m\cdot m'}\equiv [f(X^m)]^{m'} ({\rm mod\ }X^r-1,p) \]

由於\(m'\)也是\(f(X)\)的自省數,我們有:

\[[f(X^m)]^{m'}\equiv f(X^{m,m'})({\rm mod}\ X^{m\cdot r}-1,p) \]

又因為\(X^r-1\)整除\(X^{m\cdot r}-1\),則上式

\[L.H.S.\equiv f(X^{m\cdot m'})({\rm mod} X^r-1,p) \]

證畢。

引理4.6:對於數\(m\),以\(m\)為自省數的多項式集合對乘法封閉。即:如果\(m\)\(f(X)\)\(g(X)\)的自省數,那么\(m\)也是\(f(X)\cdot g(X)\)的自省數。

證明

\[[f(X)\cdot g(X)]^m=[f(X)]^m\cdot [g(X)]^m\equiv f(X^m)\cdot g(X^m)({\rm mod}\ X^r-1,p) \]

以上兩個引理說明:對於集合\(I=\{(n/p)^i\cdot p^j|i,j\ge 0 \}\)中的任意一個數,它都是集合\(P=\{\prod_{a=0}^l(X+a)^{e_a}|e_a\ge 0 \}\)中任意一個多項式的自省數。在此基礎上我們定義兩個群,它們將在后面的證明中起到重要的作用。

第一個群是集合\(I\)中的數模\(r\)的余數構成的群,即:

\[G=\langle (\frac{n}{p})^i\cdot p^j({\rm mod}\ r)|i,j\ge 0 \rangle \]

由於\((n,r)=(p,r)=1\),所以它是\(Z_r^*\)的子群。設\(|G|=t\),\(G\)\(n\)\(p\)\(r\)生成,因為\(o_r(n)>\log ^2n\),所以\(t>log^2n\).

要定義第二個群,我們需要一些關於有限域上分圓多項式的基礎事實。令\(Q_r(X)\)為域\(F_p\)上的\(r\)次分圓多項式。多項式\(Q_r(X)\)整除\(X^r-1\),並且\(Q_r(X)\)可以分解為次數為\(o_r(p)\)的不可約多項式。令\(h(X)\)是一個不可約因式,因為\(o_r(p>1)\),所以\(h(X)\)的次數大於1。第二個群是\(P\)中多項式模\(h(X)\)\(p\)的余式構成的集合。設這個群為 \({\mathcal G}=\langle X({\rm mod\ }h(X,p)) ,X+1({\rm mod\ }h(X,p)),\cdots,X+l({\rm mod\ }h(X,p))\rangle\).令\(F=F_p[X]/(h(X))\) ,則\(\mathcal G\)是乘法群\(F\)的一個子群。

以下引理給出了群\(\mathcal G\)的階的一個下界,它由Hendrik Lenstra Jr.證明,並對我們早期研究中給出的算法的下界作了些許改進。

引理4.7(Hendrik Lenstra Jr.引理)

\[|{\mathcal G}|\ge\left(\begin{array}{c}t+l\\t-1\end{array}\right) \]

作者注:Macaj也曾獨立地證明了這個引理。

證明:首先我們注意到\(h(X)\)是分圓多項式\(Q_r(X)\)的因子,所以在\(F\)\(X\)是它的一個\(r\)次本原單位根。接下來我們證明,任意兩個次數小於\(t\)的多項式可以映射到\(\mathcal G\)中的不同元素。設\(f(X)\)\(g(X)\)\(P\)中的兩個多項式,且\(\deg f(X)<t,\deg g(X)<t\).設在\(F\)\(f(X)=g(X)\),即\(f(X)\equiv g(X)({\rm mod}\ h(X),p)\).再設\(m\in I\),則

\[[f(X)]^m\equiv [g(X)]^m({\rm mod}h(X),p) \]

由於\(m\)\(f(X),g(X)\)的自省數,且\(h(X)\)整除\(X^r-1\),我們得到:

\[f(X^m)\equiv g(X^m)({\rm mod}h(X),p) \]

這意味着對於\(\forall m\in G\)\(X^m\)是多項式\(Q(Y)=f(Y)-g(Y)\)的根。由於\((m,r)=1\)\(G\)\(Z_r^*\)的子群,任意一個如上的\(X^m\)都是\(r\)次本原單位根,因此多項式\(Q(Y)\)\(F\)中一共有\(|G|=t\)個不同的根。但是因為\(f\)\(g\)的次數都小於\(t\)\(Q(Y)\)的次數小於\(t\),從而推出矛盾。因此,\(f(X)\not\equiv g(X)({\rm mod}\ h(X),p)\).

注意到對於\(F_p\)中的\(1\le i\ne j\le l\)\(i\ne j\).且\(l=\lfloor \sqrt{\phi(r)}\log n\rfloor <\sqrt r\log n<r<p\).所以在\(F\)\(X,X+1,X+2,\cdots,X+l\)兩兩不等。同時,因為\(h\)次數大於1,\(X+a\ne 0\)對於\(F\)中的任意一個\(a,0\le a\le l\)都成立,所以\(\mathcal G\)中至少有\(l+1\)個不同的一次多項式。因此\(\mathcal G\)中至少存在\(\left(\begin{array}{c}t+l\\t-1\end{array}\right)\)個次數小於\(t\)的不同的多項式。證畢。

\(n\)不是素數\(p\)的方冪,那么我們可以給出\(\mathcal G\)的階的一個上界。

引理4.8:如果\(n\)不是素數\(p\)的方冪,那么\(|{\mathcal G}|\le n^{\sqrt t}\)

證明:考慮以下\(I\)的子集

\[\hat I=\{(\frac np)^i\cdot p^j|0\le i,j\le \lfloor \sqrt t\rfloor \}. \]

如果\(n\)不是\(p\)的方冪,那么集合\(\hat I\)中有\((\lfloor \sqrt t\rfloor )^2>t\)個不同的數。又因為\(|G|=t\)\(\hat I\)中至少存在兩個數在模\(r\)意義下相等。不妨設這兩個數分別是\(m_1,m_2\),且\(m_1>m_2\).於是我們有:

\[X^{m_1}\equiv X^{m_2}({\rm mod}\ X^r-1,p ) \]

\(f(X)\in P\).那么:

\[\begin{aligned}{}[f(X)]^{m_1}&\equiv f(X^{m_1})({\rm mod}\ X^r-1,p )\\&\equiv f(X^{m_2})({\rm mod}\ X^r-1,p )\\&\equiv [f(X)]^{m_2}({\rm mod}\ X^r-1,p )\end{aligned} \]

這意味着在域\(F\)

\[[f(X)]^{m_1}=[f(X)]^{m_2} \]

因此,\(f(X)\in {\mathcal G}\)是域\(F\)中的多項式\(Q'(Y)=Y^{m_1}-Y^{m_2}\)的根。由於\(f(X)\)具有任意性,多項式\(Q'(Y)\)在域\(F\)中至少具有\(|\mathcal G|\)個互不相等的根。又

\[{\rm deg} (Q'(Y))=m_1\le (\frac np\cdot p)^{\lfloor \sqrt t\rfloor}\le n^{\sqrt t} \]

也就證明了\(|{\mathcal G}|\le n^{\sqrt t}\),證畢。

有了以上的准備,我們現在可以證明算法的正確性了。

引理4.9:如果算法返回PRIME,那么\(n\)是素數。(必要性)

證明:假設算法返回PRIME,由引理4.7,對於\(t=|G|\)\(l=\lfloor \sqrt{\phi (r)}\log n\rfloor\),有

\[\begin{aligned}{}|{\mathcal G}|&\ge\left(\begin{array}{c}t+l\\t-1\end{array}\right)\\&\ge \left(\begin{array}{c}l+1+\lfloor\sqrt t \log n \rfloor\\ \lfloor \sqrt t\log n\rfloor \end{array}\right) \quad({\rm since\ }t>\sqrt t\log n) \\&\ge\left(\begin{array}{c}2\lfloor \sqrt t\log n\rfloor+1\\\lfloor \sqrt t\log n\rfloor\end{array}\right) \quad({\rm since\ }l=\lfloor \sqrt{\phi (r)}\log n\rfloor\ge \lfloor \sqrt t\log n\rfloor ) \\&\ge2^{\lfloor \sqrt t\log n\rfloor +1}\quad\quad\quad({\rm since\ }l=\lfloor \sqrt t\log n\rfloor \ge\lfloor \log ^2n\ge1\rfloor )\\&\ge n^{\sqrt t}\end{aligned} \]

由引理4.8,若\(n\)不是素數\(p\)的方冪,則${|\mathcal G|}\le n^{\sqrt t} $.因此由上述不等式,可知:

\[n=p^k\quad (\exists k>0). \]

\(k>1\),則算法在第一步返回COMPOSITE,因此這里的情況只能是\(n=p\)。這就完成了對定理4.1的證明。

第五部分:分析算法時間復雜度的界限

我們計算復雜度基於以下事實:兩個長為\(m\)比特的數的加法,乘法,出發運算時間復雜度是\(O^{\sim}(m)\).類似的,兩個次數為\(d\)、系數至多為\(m\)比特的多項式的運算的時間復雜度是\(O^{\sim}(d\cdot m)\).

定理5.1:算法的漸進時間復雜度是\(O^{\sim }(\log ^{21/2}n)\).

證明:算法的第一步漸進時間復雜度為\(O^{\sim }(\log ^{3}n)\).

在算法的第二步,我們要找一個滿足\(o_r(n)>\log ^2 n\)\(r\),這可以通過驗證對於每一個r和\(\forall k\),且\(1\le k\le \log^2n\),在模\(r\)意義下\(n^k \ne 1\)是否成立。
對於固定的\(r\),計算\(n^k({\rm mod\ }r)\)需要作至多\(O(\log^2 n)\)次模r乘法,所需時間復雜度為\(O(\log ^2n\log r)\).由引理4.3我們知道只需檢驗 \(O(\log ^5 n)\)個不同的\(r\)的值。因此第二步的時間復雜度為 \(O^{\sim }(\log ^7 n)\).

算法第三步包括計算\(r\)對數的最大公因數。求最大公因數的時間復雜度是\(O(\log n)\),因此這一部的時間復雜度是\(O(r\log n)=O(\log ^6n).\)

算法第四步復雜度僅為\(O(\log n)\).

算法第五步,我們需要驗證\(\lfloor \sqrt{\phi(r)}\log n\rfloor\)個方程。驗證每個方程需要\(O(\log n)\)次次數為\(r\),系數大小為\(O(\log n)\)的多項式乘法。所以驗證每個方程需要的時間開銷為\(O^{\sim }(r\log ^2n)\)。因此第五步的總時間復雜度為

\[O^{\sim}(r\sqrt{\phi(r)}\log^3n)=O^{\sim}(r^{3/2}\log ^3n)=O^{\sim}(\log^{21/2}n). \]

這個時間復雜度已經涵蓋了其它步驟的復雜度,因此算法整體的時間復雜度為\(O^{\sim}(\log^{21/2}n).\)證畢。

通過改進對整數\(r\)的估計精度(由引理4.3),算法的時間復雜度還可以進一步優化。對於最好的情況,即\(r=O(\log^2n)\)時,總的時間復雜度為\(O^{\sim}(\log ^6n)\).事實上,有兩個猜想可以支持\(r=O(\log^2n)\)的可能性。(以下的\(\ln\)以自然對數的底數\(e\)為底)

Artin猜想

對於給定的\(n\in {\mathbb N}\),且\(n\)不是完全平方數,則滿足\(o_q(n)=q-1\)\(q\le m\)的素數\(q\)的個數漸進為\(A(n)\cdot \frac m{\ln m}\).這里的\(A(n)\)稱為Artin常數\(A(n)>0.35\).

蘇菲·姬曼(Sophie Germain)素數密度猜想

滿足\(2q+1\)仍為素數的素數\(q\le m\)的個數漸進為\(\frac {2C_2m}{\ln ^2m}\).這里的\(C_2\)是孿生素數常數,其值約為0.66。具有上述性質的素數\(q\)稱為Sophie Germain素數

\(m=O(\log ^2n)\),若Artin猜想成立,立刻可得存在滿足要求的\(r=O(\log^2n)\)。在引用文獻[GM],[GMM],[HB]中,它們已經對Artin猜想的證明做了一些工作,而且,在廣義黎曼猜想的基礎上,Artin猜想是成立的。

若Sophie Germain猜想成立,我們可得\(r=O^{\sim}(\log ^2n)\):

由Sophie Germain素數密度猜想,對於一個合適的常數\(c\),在\(8\log ^n\)\(c\log^2n(\log \log n)^2\)之間一定存在至少\(\log ^2n\)個Sophie Germain素數。對任意一個這樣的素數\(q\),必定滿足以下兩條性質其一:

①:\(o_q(n)\le 2\)

②:\(o_q(n)\ge (q-1)/2\)

滿足①的任意素數\(q\)必整除\(n^2-1\),由此可知這樣的\(q\)的個數的上界為\(O(\log n)\).這指出了一定存在一個素數\(r=O^{\sim }(\log ^n)\)使得\(o_r(n)>\log ^2 n\).這樣的\(r\)就使得我們的算法復雜度變為\(O^{\sim}(\log ^6n)\).

對Sophie Germain素數密度猜想的證明也已有所進展。記\(P(m)\)\(m\)的最大素因子,Goldfeld[Gol]已經證明了滿足\(P(q-1)>q^{\frac 12+c},c\approx \frac 1{12}\)的素數\(q\)以正密度出現。基於以上基礎,Fouvry證明了以下結果

引理5.2

\[\exists c>0,n_0\\ {\rm s.t.\quad } \forall x\ge n_0:\\|\{q|q是素數且q\le x\ 且 \ P(q-1)>q^{\frac23} \}|\ge c\frac x{\ln x} \]

以上引理中的指數精度還可以提高到\(0.6683\).使用以上引理我們可以優化算法的時間復雜度。

定理5.3:算法的時間復雜度是\(O^{\sim}(\log ^{15/2}n)\).

如以上敘述所說,由於滿足\(P(q-1)>q^{2/3}\)的素數\(q\)密度較高,以至於在算法的第二部能夠找到滿足\(o_r(n)>\log ^2n\)\(r=O(\log ^3n)\).這就將我們的算法復雜度降低到了\(O^{\sim}(\log^{15/2}n)\).證畢。

最近,Hendrik Lenstra和Carl Pomerance對我們的算法做出了改進,可以證明修改版的算法復雜度為\(O^{\sim}(\log^6n)\).

第六部分:將來的工作

我們的算法第五步循環需要進行 \(\lfloor \sqrt{\phi(r)}\log n \rfloor\) 次,以保證群 \(\mathcal G\) 的階足夠大。
如果我們可以證明由較少的\((X+a)\)也能生成同樣結束的群,則循環的迭代次數可以減少。這是極有可能的。

若以下猜想成立,算法的復雜度還可以進一步優化至\(O^{\sim}(\log ^3n)\)(引用文獻[BP]提出了此猜想,並在[KS]中驗證了\(r\le 100,n\le 10^{10}\)的情況)。

猜想6.1:對素數\(r\),如果\(r\)不整除\(n\)且滿足

\[(X-1)^n\equiv X^-1({\rm mod\ }X^r-1,n).\tag6 \]

\(n\)要么是一個素數,要么\(n^2\equiv 1({\rm mod \ }r)\).

如果以上猜想成立,我們可以略微修改一下算法,首先尋找不整除\(n^2-1\)的整數\(r\),這樣的\(r\)必可在\([2,4\log n]\)區間內找到。這是因為小於\(x\)的素數的乘積不小於\(e^x\)(見引用文獻[Apo]).然后我們需要驗證同余式(6)是否成立,其時間復雜度為\(O^{\sim}(r\log^2n)\).這使得算法的整體時間復雜度降低到了\(O^{\sim}(\log ^3 n)\).

最近,Hendrik Lenstra和Carl Pomerance[LP2]認為上述猜想是錯誤的,但盡管如此,這個猜想的一些變體仍然可能是正確的。(例如強行令\(r>\log n\)的情況).

致謝

我們感謝Hendrik Lenstra Jr.允許我們使用他的一些發現來改進群\(\mathcal G\)的階的下界,這使得算法的證明過程變得簡單(在早期版本的證明中需要用到引理5.2給出的密度界限),並且改善了時間復雜度!

我們也非常感謝Adam Kalai, Amit Sahai和Madhu Sudan允許我們在引理4.8中引用了他們的證明。這使得對群\(\mathcal G\)的階的上界和下界的證明方法類似。(它們都通過一個域上多項式的根的數量來進行證明)

感謝Somenath Biswas, Rajat Bhattacharjee, Jaikumar Radhakrishnan和V.Vinay的許多有用的討論。

感謝Erich Bach, Abhijit Das, G.Garman, Roger Heath-Brown, Pieter Moree, Richard Pinch和Carl Pomerance為我們提供了有用的參考文獻。

自從我們的預印版本發布以來,許多研究人員指出了我們論文中存在的各種各樣的疏忽之處,我們感謝所有這些研究人員。我們盡量在論文中采納了他們的建議,對於那些沒有采用的建議,我們表示歉意。

最終,我們感謝那些提出了有用的建議和相關研究的匿名引用作者。

參考文獻

(譯者注:這部分參考文獻請看原文pdf第13頁到第14頁)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM