概率算法新.pptVIP

  1. 1、本文档共147页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
概率算法新

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * §5.2 素数测定(数的素性测定) 当n为合数,对?a∈[1,n-1],有 吗? 若成立,则只要n是合数,? 否则n为素数。遗憾的是此命题亦不成立。 ?结论:我们不能通过验证an-1modn是否为1来判定n是否为素数 例如: ∵ ∴ 若是 时呢? 设n=15(合数), * * §5.2 素数测定(数的素性测定) 3.伪素数和素性伪证据 设2≤a≤n-2,一个满足 (即n可整除an-1-1)的合数n称为以a为底的伪素数,a称为n的素性伪证据。 实际上,符合费马小定理逆命题的数,我们称为拟素数(Probable Prime) 。 拟素數一是素數,二是伪素數。 后来数学家渐把符合一些素数性质的逆命题的合数称为伪素数 伪素数有多少? 在前10亿个自然数中,有50,847,534个素数,而以2为底的伪素数则只有5597个。 因此在n整除2n-1 -1的情况下,出现合数的机会仅有5597/(5597 = 0.00011 。 而我们同时考虑以2和3为底的伪素数,则只有1272个。 因此n同时可以整除2n-1 -1和整除3n-1 -1的情况下,碰上合数的机会便更低了,仅有1272/(1272 = 0.000025。 若我们把该测试扩张至其他底,自然会将找到伪素数的机会降低,会降至0吗?否! * * §5.2 素数测定(数的素性测定) 若将Fermat测试改为从2~n-2之间随机选a,则只有选到一个伪证据时,对合数的测试失败(返回true). 伪证据有多少? 总体情况是伪证据相当少 1000之内的奇合数测试误差概率3.3%。n较大时,概率更小。 有些合数伪证据比例相当高 如561,有318个伪证据,超过证据数的一半(2~559)。极端情况:Fermat(651693055693681)返回true的概率99.9965% 一般地,对 ,存在无穷多个合数,使得Fermat测试发现他们是合数的概率小于δ 即:对任意的p0, Fermat测试都不是p-正确的。因此,以前将Fermat测试重复固定次数,并不能将误差降到任意小的ε内。 * * §5.2 素数测定(数的素性测定) Fermat测试改进 强伪素数 设n是一个大于4的奇整数,s和t是使得 的正整数,其中t为奇数,设B(n)是如下定义的整数集合: 当且仅当2≤a≤n-2且满足下述2个条件之一: 或 ? 当n为素数时, ,均有 当n为合数时,若 ,则称n为一个以a为底的强伪素数,称a为n素性的强伪证据。 n为素数,说明它对所有底均为强伪素数。 * * §5.2 素数测定(数的素性测定) Btest(a,n){//n为奇数, 返回 。即返回//真说明n是强伪素数或素数 s←0; t ←n-1; // t开始为偶数 repeat s++;t ← t÷2; until t mod 2 = 1; //n-1=2st , t为奇数 x ←at mod n; if x=1 or x=n-1 then return true;//满足①or②, for i ←1 to s-1 do{ //验证 x ← x2 mod n; if x=n-1 then return true; //满足②, } return false; } *

文档评论(0)

sheppha + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:5134022301000003

1亿VIP精品文档

相关文档