随机算法 MillerRabin素数测试是3/4正确的蒙特卡洛算法

随机算法 MillerRabin素数测试是3/4正确的蒙特卡洛算法

为什么MillerRabin素数测试优于简单利用费马定理的测试呢?
当我们利用费马小定理测试一个数是否是素数的时候,如果返回假,那么100%确定这
个数是合数,但是如果返回值是真,有多少出错的可能呢。如果a^(n-1)mod n =1并
且n是一个合数那么这个a就叫做n的一个假见证,我们做个这样的一个统计,在小于1000
的奇合数中有多少个假见证呢。
小于1000的奇合数有332个,在这332个奇合数中仅有5个数没有假的见证,
超过一半的有两个假见证,只有16%的有超过15个假见证。
一共有4490个假见证。但是总共有172828个见证可以选择。
所以总之,小于1000的奇合数,出错的可能是3.3%,而在更大的数域内出错的概率会降低。
但是并不是每一个奇合数都只有少量的假见证,有的数有很多的假见证,所以特别的对这种
数出错的概率是很大的,例如:561有318个假见证,再如对于这个15位的数651693055693681,
出错的概率为99.9965%,所以说如果费马小定理测试法是p-correct的,那么这个p值是不确定的。

但是基于MillerRabin的素数测试呢?
考虑,测试算法中的witness(a,n)如果返回真,那么n一定是合数,如果返回假,那么n是素数
的概率有多大呢?对于任意的a如果witness(a,n)返回假,那么当且仅当a属于B(n)。如果n是
一个奇合数,那么如果a属于B(n),则,a叫做n的强假见证,可以预见的是强假见证个数比假见
证更为稀少,具体的在小于1000的数中,随机选择一个数是强假见证的概率小于1%,超过72%的
奇合数没有强假见证
不加证明的给出以下定理
【如果n是素数则有B(n)={a|2<=a<=n-2},如果n是合数则有|B(n)|<=(n-9)/4】
所以MillerRabin素数测试算法是一个3/4正确的蒙特卡洛算法,如果k次运行该算法,则
出错的概率可以降低到(1/4)^k。这是一个相当理想的结果了。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值