初等数论程耀精.ppt
《初等数论程耀精.ppt》由会员分享,可在线阅读,更多相关《初等数论程耀精.ppt(23页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、初等数论程耀第1 页,本讲稿共23 页素数和合数 算术基本定理:任意正整数n 可以写成n=2a1*3a2*5a3*,其中a1,a2,a3 等为非负整数 素数的判定:判定函数 筛法求素数 miller_rabin 素性判定第2 页,本讲稿共23 页素数的判定bool Is_prime(int n)int t=(int)sqrt(n);for(int i=2;i=t;i+)if(n%i=0)return false;return true;第3 页,本讲稿共23 页筛法求素数思考:如果一个数是合数,那么它的素因子都比它小?这样说来:如果我们的当前数是 a,那么所有 a 的倍数(当然是2 倍以上啦)
2、都不会是素数,可以这样看吧?于是,我们可以一种新的素数判定方法。第4 页,本讲稿共23 页筛法求素数 方法:每次用一个素数,去筛掉所有它的倍数。举个例子:2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 2829 30筛去2 的倍数,剩下3 5 7 9 11 13 15 17 19 21 23 25 27 29筛去3 的倍数,剩下5 7 11 13 17 19 25 29。注意:开头的数一定是素数?第5 页,本讲稿共23 页筛法求素数bool prime maxn;/时间复杂度O(n)?void init
3、()memset(prime,0,sizeof(prime);for(int i=4;i maxn;i+=2)primei=1;for(int i=3;i maxn;i+=2)if(!prime i)for(int j=i*i;j maxn;j+=i)prime j=1;第6 页,本讲稿共23 页miller_rabin 素性判定 miller_rabin 是一种概率型的算法,不是确定型的。但是,只要运行次数足够多,一般出错的概率是非常小的,一般10 次就好了!算法复杂度是 O(logn)3)算法的正确性是基于费马小定理。费马小定理:对于素数p 和任意整数a,有a(p-1)=1(mod p)。
4、反过来,满足a(p-1)=1(mod p),p 也几乎一定是素数。第7 页,本讲稿共23 页miller_rabin 算法分析bool miller_rabin(LL n)if(n2)return false;if(n=2)return true;if(!(n&1)return false;for(int i=1;i=12;i+)LL a=random(n-2)+1;if(witness(a,n)return false;return true;第8 页,本讲稿共23 页witness 函数 witness 函数用来搜集n 是合数的证据。bool witness(LL a,LL n)LL m=
5、n-1;int t=0;LL y;while(!(m&1)m=1;t+;/这个地方是通过一个推论来优化的,x2=1(mod n),当那个n 是合数的时候,就会出现非平凡平方根!LL x=quick_mod(a,m,n);for(int i=1;i=t;i+)y=muti(x,x,n);if(y=1&x!=1&x!=n-1)return true;x=y;if(y!=1)return true;else return false;第9 页,本讲稿共23 页快速幂取模 题目:求出mn(mod p)的值,其中 m=10000,n=100000000。分析:如果直接边乘然后边取模,直接导致 TLE!我
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 初等 数论 程耀精
限制150内