這篇論文主要研究素性測試的多項式時間算法,因爲沒有在網上找到合適的翻譯版本,本人自行翻譯了一個版本供學習使用。若有錯誤請指出。
英文原版的論文已打包上傳 https://files.cnblogs.com/files/allegro-vivace/PrimesinP_original.zip算法
本文做者:Manindra Agrawal, Neeraj Kayal, Nitin Saxena.app
咱們將在文中給出一種素性檢測的無條件的肯定性多項式時間算法。函數
關於素數的研究一般是數學中最重要的部分之一,尤爲在數論中。因此研究素數的不一樣性質是很是有趣的,尤爲是那些能夠有效地斷定一個數是不是素數的那些性質。一樣,這些有效的素性測試算法是很是實用的,例如許多加密協議須要用到大素數。工具
記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),所以費馬素性檢驗不是一個正確的素性測試算法。儘管如此,費馬小定理仍然是許多素性檢驗算法的基礎。ui
在計算複雜性理論初步造成的1960年代,計算複雜度的概念基本肯定,而且在其中定義了許多複雜度類。在此時期,素性測試問題被深刻地研究。而且該問題屬於co-NP類:要證實\(n\)不是素數,只需指出\(n\)的一個非平凡的因子。在1974年,V.R.Pratt發現素性測試問題也是屬於NP類的。(所以該問題屬於NP\(\cap\)co-NP).加密
1975年,Miller基於費馬小定理和廣義黎曼猜測獲得了一種素性檢驗的肯定性多項式時間算法,不久後,他的算法被Rabin作出了一些修改,獲得了一種無條件的、隨機化的多項式時間算法。另外,Solovay和Strassen在1974年也提出了一種不一樣的隨機化多項式時間算法。spa
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 ^{12/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\)選擇一個合適的較小數。也就是說,檢驗如下等式是否成立
由引理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\)的任意函數。例如:
\(\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\)
\(if (n=a^b\ for\ a\in {\mathbb N}\ and b>1) ,\ output {\rm\ COMPOSITE}.\)
\(Find\ the\ smallest\ r\ such\ that\ o_r(n)>\log^2n).\)
\(if(1<(a,n)<n\ for\ some\ a\le r),\ output\ {\rm COMPOSITE.}\)
\(if(n\le r),\ output\ {\rm PRIME}\).
\(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;}\)
\(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\)一定可以整除如下乘積
由引理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
,因此有:
對於任意的\(a,0\le a\le l\)(平凡地,\(a=0\)顯然成立),可知:
對於\(\forall a, 0\le a\le l\),由引理2.1,咱們有:
對於\(\forall a, 0\le a\le l\),由方程(3)和(4),咱們有:
對於\(\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)\)的自省數,咱們有:
因爲\(m'\)也是\(f(X)\)的自省數,咱們有:
又由於\(X^r-1\)整除\(X^{m\cdot r}-1\),則上式
證畢。
引理4.6:對於數\(m\),以\(m\)爲自省數的多項式集合對乘法封閉。即:若是\(m\)是\(f(X)\)和\(g(X)\)的自省數,那麼\(m\)也是\(f(X)\cdot g(X)\)的自省數。
證實:
以上兩個引理說明:對於集合\(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\)的餘數構成的羣,即:
因爲\((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\),則
因爲\(m\)是\(f(X),g(X)\)的自省數,且\(h(X)\)整除\(X^r-1\),咱們獲得:
這意味着對於\(\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\)的子集
若是\(n\)不是\(p\)的方冪,那麼集合\(\hat I\)中有\((\lfloor \sqrt t\rfloor )^2>t\)個不一樣的數。又由於\(|G|=t\),\(\hat I\)中至少存在兩個數在模\(r\)意義下相等。不妨設這兩個數分別是\(m_1,m_2\),且\(m_1>m_2\).因而咱們有:
設\(f(X)\in P\).那麼:
這意味着在域\(F\)中
所以,\(f(X)\in {\mathcal G}\)是域\(F\)中的多項式\(Q'(Y)=Y^{m_1}-Y^{m_2}\)的根。因爲\(f(X)\)具備任意性,多項式\(Q'(Y)\)在域\(F\)中至少具備\(|\mathcal G|\)個互不相等的根。又
也就證實了\(|{\mathcal G}|\le n^{\sqrt t}\),證畢。
有了以上的準備,咱們如今能夠證實算法的正確性了。
引理4.9:若是算法返回
PRIME
,那麼\(n\)是素數。(必要性)
證實:假設算法返回PRIME
,由引理4.7,對於\(t=|G|\)和\(l=\lfloor \sqrt{\phi (r)}\log n\rfloor\),有
由引理4.8,若\(n\)不是素數\(p\)的方冪,則${|\mathcal G|}\le n^{\sqrt t} $.所以由上述不等式,可知:
若\(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 ^2 n\),是否知足$n^k\not\equiv1({\rm mod}\ r) \(.對於一個固定的\)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 ^7n)$.
算法第三步包括計算\(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}(\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頁)