素数测试随机算法

1. 问题定义


          输入:一个正整数N;

          输出:N是否为素数。



2. 随机算法设计


         基本思想:对N进行m次测试,如果有一次测试成功,则回答N是合数;如果m次测试均失败,则回答N是素数。回答N是合数时,答案100%正确;回答N是素数时,答案正确的概率是1 - 2^(-m)。算法基本步骤如下:

            

         1. 随机选择m个数{b1,b2,...,bm}满足 1≤ b1,b2,...,bm≤N;

         2. For i=1 To m Do

         3.        if W(bi)成立 Then Return (N是合数)

         4. Return (N是素数)

         其中W(bi)的定义为:bi^(N-1) mod N ≠ 1 或者 存在j使得(N - 1)/ 2^j = k 是整数并且bi^k - 1与N的最大公因数不同于1和N。

 


3. 算法的性能分析


         为判定正整数N是否为素数,可利用费尔马小定理对N进行m次随机测试。如果其中一次测试成功,则断言N是合数,如果m次测试失败,则断言N是素数,但此时结论不一定正确,结论正确的概率大于 1 - 2^-m。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值