您好,欢迎访问三七文档
素性测试PRIMETESTING内容的设置简单判别法概率判别法问题的引入Primetesting如何有效地确定一个给定的数是否是素数,即素性测试问题又叫素性检验、素性检测通常借助合数测试,即通过判断出是合数而证明不是素数目的:快速生成大素数分为确定测试和概率测试确定测试指能肯定被测试的数是素数或合数。概率测试指在很小的可能性内使测试将复合数判别为素数(或反之):如果判断为素数,则是合数的概率小于很小的一个数概率测试需要满足:比确定测试快得多,出错的概率极小简单判别法目前几乎没有实用价值整除判别法又叫古典判别法用已知的素数去寻找下一个素数:用不超过sqrt(n)的整数试除爱托拉斯散筛法Eratosthene的依据Wilson阶乘判别法根据wilson定理:P素=)(mod1)!1(pp素数的概率判别法拟素数又叫伪素数,更狭义的指通过了素性测试的合数伪素数、强伪素数和Carmichael数最简单的概率素性测试算法为Fermat素性测试费马小定理不成立一定为合数费马小定理成立不一定为素数几个有效素性测试算法的起点和基石多次重复,降低是拟素数的概率基本是排除合数的情况通常计算机实现的都是概率判别法素数的概率判别法费马概率判别法利用费马小定理(b,n)=1,bn-1≡1(modn)同余式成立的合数n叫以b为基的拟素数,或叫基b的拟素数如果合数n是以任意互素正整数为基的拟素数,则叫Carmichael数,卡米切尔561是第一个对其无法确定它是一个合数,除非碰到它的一个因子虽被证明无穷多,但非常稀少素数的概率判别法费马概率判别法方法:给定奇数n5和安全参数t(1)随机选取整数b,2≤b≤n-1(2)计算g=(b,n),若g=1,则n合(3)计算r≡bn-1(modn),若r=1,则n合(4)若(2)(3)都不能证明是合,则可能素(5)上述过程重复t次,若每次都得到n可能素的结果,则n是素的概率为t211素数的概率判别法Lehmann算法同样利用费马小定理(b,n)=1,bn-1≡1(modn)少算一次幂,只需b(n-1)/2≡±1(modn)素数的概率判别法Solovay-strassen概率判别法利用欧拉判别条件成立不一定为素数,n为合数时成立叫做基b的euler拟素数基b的euler拟素数一定是基b的拟素数,逆不成立))(mod(2/)1(nnbbp素数的概率判别法Miller-Rabin素性检验利用素数的因子只有1和自身,p是素数时,则x21(modp)的解为1或-1(modp)或者说若n-1=2st,2|t,则bn-1–1=(+1)(+1)…(bt+1)(bt-1),若n是素数时,n|bn-1–1,则n一定整除其中一个因式如果合数也满足,则称强拟素数基b的强拟素数一定是基b的欧拉拟素数实际用的最多的tsb*21tsb*22素数的概率判别法Miller-Rabin素性检验方法:给定奇素n3(n-1=2sm,s0,m奇)和安全参数t(1)随机选取整数b,2≤b≤n-1;r=0(2)z=bm(modn),若z=1或n-1,则n可能素,转(8)(3)若r=s-1,则n合(4)r++(5)z=z2(modn)(6)若z=n-1则n可能素,转(8)(7)转(3)(8)上述过程重复t次,若每次n都可能素,则n是素的概率为t411总结素性判断目的:判断一个数是否是素数用途:生成素数方法:古典、确定性、概率性实用的:大整数计算机素性判断使用概率方法总结概率性素性判断理论依据:费马小定理不足:费马小定理成立并不一定是素数导致:拟(/伪)素数,即本是合数却被误判为素数解决:重复最终结果:通过测试的数是素数的概率非常大总结概率性素性判断的三种方法共同依据:bn-1≡1(modn),(b,n)=1共同措施:循环:b++,t--(b为底,t为循环次数,叫安全参数)(b,n)互质,否则n非素总结概率性素性判断的三种方法共同依据:bn-1≡1(modn),(b,n)=1考虑:左右同时开方后不同之处:幂的值:n-1,(n-1)/2,(n-1)去除2的幂拟素数:基b的费马拟素数、欧拉拟素数、强拟素数
本文标题:素性测试
链接地址:https://www.777doc.com/doc-1848373 .html