收藏 分享(赏)

acm程序设计12.ppt

上传人:天天快乐 文档编号:763208 上传时间:2018-04-21 格式:PPT 页数:23 大小:932.50KB
下载 相关 举报
acm程序设计12.ppt_第1页
第1页 / 共23页
acm程序设计12.ppt_第2页
第2页 / 共23页
acm程序设计12.ppt_第3页
第3页 / 共23页
acm程序设计12.ppt_第4页
第4页 / 共23页
acm程序设计12.ppt_第5页
第5页 / 共23页
点击查看更多>>
资源描述

1、ACM程序设计,第十二讲,若干数论问题,剩余类完全剩余系简化剩余系欧拉函数素数判定大整数分解,剩余类,按照某一模m的余数将全体整数进行分类例如 奇数和偶数就是模2的剩余类,完全剩余系,在每个对模m同余的剩余类中选出一个数构成具有m个元素的集合,称为完全剩余系有下面结论:任意m个连续整数构成对模m的剩余系0,1,2,m-1构成对模m的最小非负剩余系 m=2k+1时,-k,-k+1,k-1,k构成对模m的最小绝对值剩余系;m=2k时, -k,-k+1,k-1构成对模m的最小绝对值剩余系设gcd(b,m)=1,c为任意整数,a1am是对模m的一个剩余系,那么ba1+c,ba2+c,bam+c也是对模

2、m的一个剩余系,简化剩余系,在模m的每个剩余类中取出一个和m互质的数构成的集合,称为简化剩余系一个剩余系里的元素要么都和m互质,要么都不和m互质,欧拉函数,把对模m的简化剩余系的元素个数称为m的欧拉函数,记做(m)欧拉函数表示0,1,m-1中和m互质的数的个数(1)的取值是0还是1,根据具体题目要求决定求欧拉函数的方法:将m分解质因数,设其所有两两不同的质因数为p1p2pn,则(m)=m*(1-1/pi),求一个连续区间数的欧拉函数,方法1:一个一个按上面公式求太慢了!方法2:筛法设一个数组phi11,赋初值phi1=1,phi2=2,phi10=10对数组下标是2的倍数的每个元素,分别乘上(

3、1-1/2)对数组下标是3的倍数的每个元素,分别乘上(1-1/3)对5对7(所有素数)都类似操作,就得到了欧拉函数值注意:一般需要先求出此区间的所有的素数,非常精简的筛法求欧拉函数的模板,const int Max=10001; int euMax void eular() int i,j; for(i=2;iMax;i+)if(!eui) for(j=i;jMax;j+=i) if(!euj)euj=j; euj=euj/i*(i-1); ,例题 Relatives(POJ2407),题意:给出n,求小于等于n且与n互质的元素个数 n1,000,000,000,思路:,显然,本题是求n的欧拉

4、函数,素数判定,试除法米勒罗宾测试,试除法,筛法求1,000,000以内的素数表,int prime200000; bool bol1000001; int prime_table() int I,j,flag=0; memset(bo,0,sizeof(bo); bo0=bo1=1; for(i=2;i=1000;i+) if(!boi) j=i*i; for(;j=1000000;j+=i)boj=1; for(i=0;i=1,k+; for(i=0;i=n)return true; a=multimod(prii,m,n); if(a=1)continue; for(j=0;jk;j+)

5、 if(a=n-1)break; a=multi(a,a,n); if(j=k)return false; return true;,Java语言中的Miller-Rabin函数,Java的BigInteger类提供了一个利用Miller-Rabin算法判断素数的函数boolean isProbablePrime(int certainty)如果此大整数可能为素数,返回true如果一定是合数,返回false传入参数越大,判断的准确度越高,花的时间也越多一般取50,大整数分解,对一个很大的整数(如1020数量级),试除法不适用这里简略介绍下面3种方法费马方法Pollard_Rho法p-1法,费马

6、方法,费马注意到:若n=a2-b2,则n=(a+b)(a-b)可分解,因此可以寻找b,使得n+b2是完全平方数寻找b的方法:可以从b=1开始依次试验。直接试验在数很大时仍然可能花费很多时间优化改进:若n+b2是完全平方数,则b的奇素数因子p一定满足其中(n/p)是勒让德符号。由此可以筛掉不满足条件的p。对费马数Fn,它的素因子形如2n+2*k+1,Pollard-Rho法,是一个概率算法输入n,在0,n)中随机选一个数x1,并让xi=(x2i-1-c) mod n,其中c也是0,n)中的随机数令y为距离xi最近的2的次幂项,每生成一项后检查d=gcd(y-xi,n)若d在2,n)之间,则d为因子此过程一直到找出d或者y=xi为止,p-1法,定理:假设素数p是n的一个因子,若p-1能整除q,则对任意的a,若p不能整除a,那么p能整除aq-1利用这个定理,只需求出gcd(aq-1,n),若结果不为1或者n,则能找到n的真因子,例题 Prime(POJ1811),题意:给出一个数N,若它是素数,输出Prime,否则,输出它的最小质因数N254,思路:,利用Miller-Rabin测试+Pollard-Rho法可分解大数,练习和作业,http:/ 数学12 密码x3s12http:/ 密码xs12,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 经营企划

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报