為什麼埃式篩法的時間複雜度是O(nloglogn)?
01-08
我的想法是當n增大的時候,我們可以認為素數是近似隨機分布的,那麼時間複雜度就是n(1/(lnn)+1/(2lnn)+……+1/((n/lnn)lnn))=(n/lnn)(1/1+1/2+……+1/(n/lnn))=n*ln(n/lnn)/lnn=n*(1-lnlnn/lnn)≈n。所以應該是O(n)的呀,但為什麼是O(nloglogn)的呢?我上述分析有什麼錯誤之處么?
以下均表示所有小於等於的質數。
for(int i=2;i&<=n;i++)
if(prime[i])
for(int j=2;j*i&<=n;j++)
prime[i*j]=false;
以這段代碼為例,時間複雜度顯然為
根據Mertens" theorems,,,所以上述演算法的時間複雜度為。
證明在此,我是一個搬運工,http://arxiv.org/pdf/math/0504289。(看了半天沒看懂捂臉逃……思路是用素數分布定理列出表達式,然後定積分確定時間界。如果懶得推可以移步http://m.blog.csdn.net/article/details?id=53861367
推薦閱讀:
※數學基礎課在計算機領域的應用有哪些?
※車萬翔是誰?在他的背後又有哪些傳奇經歷?
※語音處理中MFCC(Mel頻率倒譜係數)對應的物理含義是什麼?它計算出的那幾個係數能反映什麼樣特徵?
※計算機專業課外書?
※mathμ(計算機代數系統)項目還在繼續嗎?