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

xiaoguozi's Blog
Pay it forword - 我并不覺的自豪,我所嘗試的事情都失敗了······習慣原本生活的人不容易改變,就算現狀很糟,他們也很難改變,在過程中,他們還是放棄了······他們一放棄,大家就都是輸家······讓愛傳出去,很困難,也無法預料,人們需要更細心的觀察別人,要隨時注意才能保護別人,因為他們未必知道自己要什么·····

第一章 素數判定法現狀

現在,確定性素數判定法已經有很多種,常用的有試除法、威廉斯方法、艾德利曼和魯梅利法。它們的適用范圍各不相同,威廉斯方法比較適合10^2010^50之間的數,艾德利曼和魯梅利法適合大于10^50的數,對于32位機器數,由于都小于10^10,所以一般都用試除法來判定。

也許有人會問:“你為什么沒有提馬寧德拉.阿格拉瓦法呢?不是有人說它是目前最快的素數判定法嗎?” 其實這是一個很大的誤解,阿格拉瓦法雖然是log(n)的多項式級算法,但目前只有理論上的意義,根本無法實用,因為它的時間復雜度是O(log(n)^12),這個多項式的次數太高了。就拿最慢的試除法跟它來比吧,試除法的時間復雜度為O(n^(1/2)*log(n)^2),當n = 16時,log(n)^12 = 16777216,而n^(1/2)*log(n)^2 = 64,你看相差有多么大!如果要讓兩者速度相當,即log(n)^12 = n^(1/2)*log(n)^2,得出n = 10^43.1214,此時需要進行的運算次數為log(n)^12 = 10^25.873(注意:本文中log()函數缺省以2為底),這樣的運算次數在一臺主頻3GHz的計算機上運行也要10^8.89707年才能運行完,看來我們這輩子是別指望看到阿格拉瓦法比試除法快的這一天啦!

除了這些確定性素數判定法外,還有基于概率的非確定性素數判定法,最常用的就是米勒-拉賓法。

對于32位機器數(四則運算均為常數時間完成),試除法的時間復雜度是O(n^(1/2)),而米勒-拉賓法的時間復雜度只有O(log(n))。所以后者要比前者快得多,但是由于米勒-拉賓法的非確定性,往往我們在需要確定解時仍然要依靠速度較慢的試除法。那是否可以通過擴展米勒-拉賓法,來找到一種更快的確定性素數判定法呢?結論是肯定的,本文就帶你一起尋找這樣一種方法。

第二章 2-偽素數表的生成

既然要擴展米勒-拉賓法,那首先我們應該知道為什么米勒-拉賓法是個非確定性素數判定法?答案很簡單,由于偽素數的存在。由于米勒-拉賓法使用費爾馬小定理的逆命題進行判斷,而該逆命題對極少數合數并不成立,從而產生誤判,這些使費爾馬小定理的逆命題不成立的合數就是偽素數。為了研究偽素數,我們首先需要生成偽素數表,原理很簡單,就是先用篩法得出一定范圍內的所有素數,然后逐一判定該范圍內所有合數是否使以2為底數的費爾馬小定理的逆命題不成立,從而得出該范圍內的2-偽素數表。我的程序運行了100分鐘,得出了32位機器數范圍內的2-偽素數表,如下:

341

561

645

1105

1387

1729

1905

2047

2465

2701

...

...

...

4286813749

4288664869

4289470021

4289641621

4289884201

4289906089

4293088801

4293329041

4294868509

4294901761

(共10403個,由于篇幅所限,中間部分省略。)

第三章 尋找2-偽素數的最小可判定底數

對于2-偽素數表的每一個偽素數,尋找最小的可以判定它們是合數的底數,我把這個底數稱之為最小可判定底數。特別地,對于絕對偽素數,它的最小質因子即是它的最小可判定底數。由于已經證明了絕對偽素數至少有三個質因子,所以這個最小質因子一定不大于n^(1/3)。下面就是我找到的最小可判定底數列表:

341     3

561     3

645     3

1105    5

1387    3

1729    7

1905    3

2047    3

2465    5

2701    5

...

...

...

4286813749      3

4288664869      3

4289470021      5

4289641621      3

4289884201      3

4289906089      3

4293088801      3

4293329041      3

4294868509      7

4294901761      3

通過統計這個列表,我發現了一個規律,那就是所有的最小可判定底數都不大于n^(1/3),由前述可知,對于絕對偽素數,這個結論顯然成立。而對于非絕對偽素數,雖然直觀上覺得它應該比絕對偽素數好判定出來,但是我無法證明出它的最小可判定底數都不大于n^(1/3)。不過沒關系,這個問題就作為一個猜想留給數學家來解決吧,更重要的是我已經通過實驗證明了在32位機器數范圍內這個結論成立。

我們還有沒有更好的方法來進一步減小最小可判定底數的范圍呢?有的!我們可以在計算平方數時進行二次檢測,下面是進行了二次檢測后重新計算的最小可判定底數列表:

341     2

561     2

645     2

1105    2

1387    2

1729    2

1905    2

2047    3

2465    2

2701    2

...

...

...

4286813749      2

4288664869      2

4289470021      2

4289641621      2

4289884201      2

4289906089      2

4293088801      2

4293329041      2

4294868509      2

4294901761      3

很顯然,二次檢測是有效果的,經過統計,我發現了新的規律,那就是經過二次檢測后所有的最小可判定底數都不大于n^(1/6),真的是開了一個平方呀,哈哈!這個結論的數學證明仍然作為一個猜想留給數學家們吧。我把這兩個猜想叫做費爾馬小定理可判定上界猜想。而我已經完成了對32位機器數范圍內的證明。

通過上面總結的規律,我們已經可以設計出一個對32位機器數進行素數判定的 O(n^(1/6)*log(n)) 的確定性方法。但是這還不夠,我們還可以優化,因為此時的最小可判定底數列表去重后只剩下了5個數(都是素數):{2,3,5,7,11}。天哪,就是前5個素數,這也太容易記憶了吧。

不過在實現算法時,需要注意這些結論都是在2-偽素數表基礎上得來的,也就是說不管如何對2的判定步驟必不可少,即使當2>n^(1/6)時。

還有一些優化可以使用,經過實驗,當n>=7^6時,可以不進行n^(1/6)上界限制,而固定地用{2,5,7,11}去判定,也是100%正確的。這樣就可以把判定次數降為4次以下,而每次判定只需要進行4log(n)次乘除法(把取余運算也看作除法),所以總的計算次數不會超過16log(n)。經過實驗,最大的計算次數在n=4294967291時出現,為496次。


自己寫了個隨機化素數判定算法:
 1 #include <iostream>
 2 #include <cmath>
 3 #include <algorithm>
 4 
 5 using namespace std;
 6 typedef unsigned __int64 longlong_t;
 7 
 8 bool _IsLikePrime(longlong_t n, longlong_t base)
 9 {
10     longlong_t power = n-1;
11     longlong_t result = 1;
12     longlong_t x = result;
13     longlong_t bits = 0;
14     longlong_t power1 = power;
15     //統計二進制位數
16     while (power1 > 0)
17     {
18         power1 >>= 1;
19         bits++;
20     }
21     //從高位到低位依次處理power的二進制位
22     while(bits > 0)
23     {
24         bits--;
25         result = (x*x)%n;
26         //二次檢測
27         if(result==1&&x!=1&&x!=n-1)
28             return false;
29 
30         if ((power&((longlong_t)1<<bits)) != 0)
31             result = (result*base)%n;
32 
33         x = result;
34     }
35     //費爾馬小定理逆命題判定
36     return result == 1;
37 }
38 inline bool JudgePrime(int n,int s)
39 {
40     srand(20);
41     for(int i=0;i<s;i++){
42         int a=rand()%(n-1)+1;
43         if(!_IsLikePrime(n,a))
44             return false;
45     }
46     return true;
47 }
48 int main()
49 {
50     int n;
51     while(scanf("%d",&n)!=EOF){
52         int num=0;
53         int cnt=0;
54         for(int i=0;i<n;i++){
55             scanf("%d",&num);
56             if(JudgePrime(num,20))
57                 cnt++;
58         }
59         printf("%d\n",cnt);
60     }
61     return 0;
62 }
s越大,穩定性越好,但效率會低點。原作者有更好的判定算法,對作者表示感謝。。
posted on 2008-01-26 09:37 小果子 閱讀(1219) 評論(0)  編輯 收藏 引用 所屬分類: 學習筆記
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            在线观看视频一区| 1769国产精品| 亚洲欧美日韩国产综合| 亚洲美女av电影| 欧美精品福利视频| 制服丝袜激情欧洲亚洲| 99re在线精品| 国产农村妇女毛片精品久久麻豆 | 亚洲福利在线观看| 亚洲国产99| 欧美精品一区二区三区四区| 一区二区三区免费网站| 亚洲影音先锋| 亚洲电影第1页| 亚洲巨乳在线| 国产亚洲女人久久久久毛片| 麻豆精品一区二区综合av | 最新亚洲电影| 欧美精品一级| 亚洲视频高清| 亚洲一二三级电影| 国产日本欧美一区二区三区| 久久国产手机看片| 欧美影片第一页| 在线观看视频欧美| 亚洲国产精品久久久久秋霞影院| 欧美高清影院| 亚洲欧美一区二区视频| 99av国产精品欲麻豆| 免费成人你懂的| 一区二区三区国产| 亚洲乱码国产乱码精品精98午夜| 欧美日韩国产专区| 午夜精品区一区二区三| 西瓜成人精品人成网站| 狠狠色香婷婷久久亚洲精品| 久久这里只精品最新地址| 欧美顶级艳妇交换群宴| 午夜精品短视频| 久久精品成人一区二区三区蜜臀| 亚洲国产日韩美| 亚洲精品综合精品自拍| 国产精品一区二区视频| 亚洲第一精品影视| 国产精品欧美日韩一区| 免费成人高清在线视频| 欧美日韩亚洲免费| 亚久久调教视频| 蜜臀av一级做a爰片久久| 亚洲一区亚洲| 久久九九国产精品| 一区二区免费在线观看| 欧美在线视频导航| 亚洲一二三四久久| 玖玖综合伊人| 欧美一级网站| 欧美片第1页综合| 久久都是精品| 欧美日韩一区二区欧美激情| 久久天天躁狠狠躁夜夜av| 欧美日韩另类国产亚洲欧美一级| 久久亚洲捆绑美女| 国产精品你懂的| 亚洲欧洲日产国产网站| 狠狠干成人综合网| 中日韩高清电影网| 亚洲高清影视| 久久大综合网| 久久成人免费| 国产精品v亚洲精品v日韩精品 | 亚洲福利视频一区| 欧美一区二区三区四区在线观看 | 久久精品亚洲精品| 久久精品国产综合| 国产手机视频精品| 性高湖久久久久久久久| 香蕉免费一区二区三区在线观看| 欧美人成在线视频| 亚洲娇小video精品| 亚洲国产成人久久| 久久最新视频| 欧美成人精品在线| 一区精品在线| 久久精品人人| 美女999久久久精品视频| 国产欧美一区二区精品仙草咪| 亚洲天堂第二页| 亚洲综合第一| 欧美午夜美女看片| 9色精品在线| 欧美在线观看网址综合| 国产精品亚洲人在线观看| 亚洲视频成人| 欧美亚洲视频| 国产一区二区三区自拍| 欧美伊人精品成人久久综合97| 欧美综合国产| 亚洲欧洲日夜超级视频| 国产精品sss| 久久久久国产一区二区三区四区| 亚洲国产三级在线| 99国产精品99久久久久久| 欧美日韩免费网站| 亚洲三级电影在线观看 | 国产精品夜夜夜| 午夜精品久久久久久久99黑人| 久久gogo国模啪啪人体图| 国产一区高清视频| 蜜臀av性久久久久蜜臀aⅴ| 亚洲国产精品成人综合色在线婷婷| 亚洲国产免费| 国产精品白丝av嫩草影院| 亚洲欧美精品中文字幕在线| 蜜臀av性久久久久蜜臀aⅴ四虎| 亚洲国产精品一区二区第一页 | 一本在线高清不卡dvd | 国产一区观看| 欧美日韩1080p| 久久久噜噜噜久久中文字幕色伊伊| 欧美国产日韩精品| 亚洲在线中文字幕| 国产一区二区精品在线观看| 欧美高清你懂得| 亚洲欧美影音先锋| 亚洲国产日韩欧美| 小处雏高清一区二区三区 | 9l国产精品久久久久麻豆| 久久精品亚洲乱码伦伦中文| 亚洲国产视频一区| 国产精品婷婷| 欧美国产一区二区| 欧美中在线观看| 夜夜爽夜夜爽精品视频| 久久女同精品一区二区| 午夜国产精品视频| 亚洲日本在线观看| 国产午夜精品在线| 欧美三级免费| 美国十次成人| 欧美一区二区三区在线免费观看 | 国产亚洲欧美一区二区| 欧美日本高清| 蜜桃伊人久久| 久久精品夜色噜噜亚洲aⅴ| 一本色道久久加勒比88综合| 亚洲高清成人| 老牛嫩草一区二区三区日本| 午夜精品福利一区二区蜜股av| 亚洲欧洲免费视频| 在线观看一区二区视频| 国产精品网曝门| 欧美性猛交99久久久久99按摩| 久久精品色图| 香蕉尹人综合在线观看| 亚洲一区二区三区精品在线| 亚洲精品一区二区三区福利| 欧美好吊妞视频| 欧美成人性网| 美女诱惑一区| 鲁大师影院一区二区三区| 久久精品国产精品亚洲| 性欧美videos另类喷潮| 先锋影音国产一区| 久久久精品日韩欧美| 蜜臀av在线播放一区二区三区| 欧美大片在线影院| 亚洲第一区色| 亚洲福利av| 亚洲毛片在线看| 91久久精品www人人做人人爽| 亚洲精品国产拍免费91在线| 亚洲伦理在线| 亚洲最新中文字幕| 亚洲视频在线一区观看| 亚洲自拍三区| 欧美伊人久久久久久午夜久久久久| 性欧美暴力猛交另类hd| 久久精品国产2020观看福利| 久久久久99| 欧美精品福利视频| 欧美日韩小视频| 国产精品jizz在线观看美国| 欧美性事在线| 国产欧美一二三区| 在线成人小视频| 日韩视频免费观看高清完整版| 亚洲美女视频在线观看| 日韩午夜在线电影| 亚洲欧美视频一区二区三区| 久久久久女教师免费一区| 欧美电影在线播放| 欧美与欧洲交xxxx免费观看| 欧美激情成人在线视频| 一本到高清视频免费精品| 先锋影院在线亚洲| 欧美aⅴ一区二区三区视频| 欧美日韩国产亚洲一区| 国产日韩欧美在线播放| 亚洲第一在线综合网站| 一区二区三区蜜桃网|