青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

  C++博客 :: 首頁 ::  :: 聯系 ::  :: 管理

篩法的性能測試

Posted on 2006-09-02 21:16 chenger 閱讀(705) 評論(0)  編輯 收藏 引用 所屬分類: Programming Stuff
主要是因為看了這篇blog突然想到的。這個篩法求素數的程序想必每個學編程的人都寫過,幾乎是最經典的算法之一了,雖然似乎沒什么用。但好像的確沒見過對這個古老算法的嚴格分析。一時好奇,就想把這個算法納入大O的框架之中……不管怎么樣,先拿出代碼再說

require'benchmark'
?
def
sievePerformance(n)
??? r =
Benchmark.realtime() do
??????? sieve =
Array.new(n,true)
??????? sieve[
0..1] = [false,false]
??????? 2.upto(n) do |i|
??????????? if sieve[i]
??????????????? (
2*i).step(n,i) do |j|
??????????????????? sieve[j] =
false
???????????????
end
???????????
end
???????
end
??? end

???
r
end


這段代碼抄自前面Robert C.Martin先生的blog,對篩法作性能測試。初看起來,程序的主體是二重循環,因此算法的復雜性好像是O(N2)之類的玩意?要么是O(NlnN)?
?
下圖是Ruby自帶的benchmark模塊測量的結果,上限N從10000到500000,步長20000。Rober C.Martin的文章里也有一張圖,是從1000000到5000000,從圖中可以看到,他電腦的性能遠勝于我,我要是從1000000到5000000這么跑一遍,花兒都謝了……總之,實測的結果是:這個算法的性能基本上是線性的。出于對ruby這樣的解釋型語言的某種不信任,我又把這段程序用C++重寫了一遍,拿C標準庫提供的clock函數測量時間,結果在N小于10000000的時候,基本上呈線性,但再往后花費的時間就開始超過線性增長了。

下面我給一個比較粗略的分析,解釋為什么這個算法的復雜度表現為線性。首先,我認為主要花費時間的是對sieve數組的讀寫,循環變量的增加應該可以忽略。如果p<N是素數,那么就要進入內循環將i的倍數“挖掉”,也就是對sieve的相應元素賦值,要進行[N/p]-1次。這樣就得到總共的賦值次數S為:



其中p為素數。顯然



數論中有個Mertens定理可以估計上面括號中的和式,結果為



其中c是一個常數。可以看到,在N很大時和式的主要部分為NlnlnN。而lnlnN是一個增長極慢的函數,lnln105=2.44,lnln109=2.91,幾乎就可以當常數處理(至少在32位無符號整數范圍內)。其他的一些項,比如循環變量的步進,都是O(N),這也就不難理解整個程序的性能是幾乎是O(N)了。




Update:上面的代碼有個很明顯的問題,就是內循環應該從i*i開始,而不是2*i,這樣對于比較大的N,性能提高很明顯(接近一半)。另外一個可改進的地方是外層循環的upto(n),可以改為upto(Integer(Math.sqrt(n)),其實這兩個改動效果是重疊的,任意改一個就差不多了。賦值次數S應為:



結果為:



可以看到效率的提升是很明顯的,畢竟lnln232也才不到3.1,ln2約為0.7。
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美一区二区精品在线| 性欧美8khd高清极品| 久久久久在线| 亚洲区国产区| 久久精品夜色噜噜亚洲a∨| 91久久精品国产91久久| 国产精品国色综合久久| 另类酷文…触手系列精品集v1小说| 亚洲乱码国产乱码精品精可以看| 美女在线一区二区| 久久成人这里只有精品| 欧美在线精品免播放器视频| 国产日韩欧美综合一区| 一区二区三区视频在线| 日韩午夜在线电影| 亚洲综合首页| 久久亚洲一区二区| 欧美激情第8页| 国产精品成人免费| 国产三区精品| 亚洲精品偷拍| 亚洲女性喷水在线观看一区| 久久精品主播| 亚洲乱亚洲高清| 香蕉成人啪国产精品视频综合网| 久久成人免费| 国产精品wwwwww| 亚洲理伦电影| 欧美制服丝袜第一页| 亚洲国产精品久久久久秋霞影院 | 国产精品国产三级欧美二区| 欧美色精品天天在线观看视频| 好看的亚洲午夜视频在线| 99精品视频一区二区三区| 欧美在线播放一区二区| 一本色道久久加勒比88综合| 久久国产精品亚洲va麻豆| 国产精品美女久久久久av超清 | 欧美激情视频一区二区三区在线播放 | 久久国产精品黑丝| 欧美+日本+国产+在线a∨观看| 一区二区三区毛片| 欧美日本二区| 日韩视频永久免费| 欧美v日韩v国产v| 久久频这里精品99香蕉| 国产婷婷色一区二区三区四区| 亚洲一区视频| 亚洲欧美中文字幕| 韩国在线视频一区| 狂野欧美一区| 欧美—级高清免费播放| 一本久道久久综合中文字幕| 亚洲日本欧美天堂| 国产精品日日摸夜夜摸av| 午夜精品视频在线观看一区二区| 亚洲免费电影在线观看| 最近中文字幕日韩精品| 欧美视频在线观看一区| 久久全国免费视频| 欧美精品v日韩精品v韩国精品v| 亚洲视频精品在线| 亚洲国产岛国毛片在线| 欧美精品在线视频观看| 欧美一区二区在线观看| 久久中文字幕导航| 欧美诱惑福利视频| 欧美a级一区| 欧美一区二区视频观看视频| 久久中文字幕一区| 欧美专区在线观看| 欧美日韩国产首页| 欧美激情精品久久久久久变态| 欧美日韩中文字幕精品| 国产精品激情偷乱一区二区∴| 中文精品视频一区二区在线观看| 午夜精品成人在线| 亚洲午夜精品福利| 另类成人小视频在线| 久久成人这里只有精品| 国产精品黄视频| 亚洲精品婷婷| 亚洲一级一区| 国产精品va在线播放| 亚洲精品在线三区| 中日韩高清电影网| 国产精品福利网| 在线午夜精品| 欧美中文字幕在线| 国模精品一区二区三区色天香| 欧美一区在线视频| 欧美大片在线观看一区| 久久伊人免费视频| 亚洲第一精品夜夜躁人人爽| 亚洲国产精品一区二区www在线| 老司机精品久久| 91久久久在线| 久久精品成人欧美大片古装| 亚洲第一狼人社区| 欧美三区视频| 久久精品电影| 99xxxx成人网| 欧美激情导航| 久久xxxx精品视频| 日韩小视频在线观看专区| 国产精品影视天天线| 免费欧美高清视频| 欧美一级大片在线观看| 亚洲国产女人aaa毛片在线| 亚洲欧美国产视频| 一本到高清视频免费精品| 黄色亚洲大片免费在线观看| 国产精品久久久久久久免费软件| 欧美激情亚洲国产| 亚洲欧洲在线免费| 国产欧美日韩| 国产精品亚洲综合久久| 国产精品www| 国产精品无码永久免费888| 欧美日韩成人激情| 欧美色另类天堂2015| 欧美国产免费| 国产精品户外野外| 国产精品女主播在线观看| 国产精品h在线观看| 欧美另类女人| 国产精品毛片在线| 国产综合久久久久久鬼色| 好看的av在线不卡观看| 亚洲大胆女人| 亚洲毛片av在线| 午夜免费久久久久| 久久综合国产精品台湾中文娱乐网| 国产免费成人av| 国产精品伦理| 亚洲国产高清自拍| 亚洲最黄网站| 久久精品一区二区三区不卡| 欧美激情aaaa| 欧美一区二区三区免费视| 欧美不卡视频一区| 国产精品日韩久久久| 亚洲高清久久久| 午夜老司机精品| 亚洲片在线资源| 一区二区三区在线观看视频| 中文在线不卡视频| 欧美激情一区二区久久久| 中文一区二区| 欧美日韩精品免费在线观看视频| 国产午夜精品一区二区三区欧美| 日韩午夜中文字幕| 欧美不卡一区| 久久疯狂做爰流白浆xx| 久久成年人视频| 国产精品入口麻豆原神| 欧美精品在线观看播放| 国产精品日韩久久久| 西西裸体人体做爰大胆久久久| 999亚洲国产精| 欧美激情第三页| 亚洲私人黄色宅男| 亚洲免费综合| 影音先锋中文字幕一区| 欧美国产丝袜视频| 欧美区高清在线| 午夜一区二区三区不卡视频| 午夜在线观看免费一区| 亚洲国产成人tv| 一区二区三区久久网| 国产一本一道久久香蕉| 欧美aⅴ一区二区三区视频| 欧美顶级艳妇交换群宴| 亚洲欧美日韩国产综合精品二区| 亚洲欧美精品suv| 亚洲精美视频| 欧美主播一区二区三区| 久久天天躁夜夜躁狠狠躁2022| 久久久97精品| 亚洲欧美一区二区三区极速播放| 欧美中文在线免费| 亚洲一区精品电影| 美女日韩在线中文字幕| 久久av老司机精品网站导航| 欧美日韩国产精品一区二区亚洲| 久久久久成人网| 欧美性猛交xxxx乱大交退制版| 免费国产自线拍一欧美视频| 国产精品综合网站| 一区二区日韩伦理片| 9l视频自拍蝌蚪9l视频成人| 国内视频一区| 亚洲欧美激情四射在线日 | 午夜精品久久久| 亚洲欧美一区二区三区久久| 欧美丝袜一区二区| 在线视频欧美一区| 亚洲一区二区三区涩| 欧美三级在线| 亚洲欧洲av一区二区三区久久|