Miller_Rabin素数测试

文章介绍了素数测试的重要性,探讨了Wilson定理的理论价值和实际应用的局限性,接着讲解了基于费马小定理的素数测试概率算法,并提出该算法存在的问题。随后,文章提到了Carmichael数以及如何使用二次探测定理改进素数判定算法,以避免误判Carmichael数为素数。此外,还简单提及了模n的大数幂乘的快速算法在数论计算中的作用。
摘要由CSDN通过智能技术生成

关于素数的研究已有相当长的历史,近代密码学的研究又给它注入了新的活力.在关于素数的研究中素数的测试是一个非常重要的问题.Wilson 定理给出了一个数是素数的重要条件.

 

Wilson 定理  对于给定的正整数 n,判定 n 是一个素数的充要条件是

           (n-1)! -1(mod n)

Wilson 定理有很高的理论价值.但实际用于素数测试所需要计算量太大,无法实现对较大素数的测试.到目前为止,尚未找到素数测试的有效的确定性算法.

首先容易想到下面的素数测试概率算法Prime

bool Prime(unsigned int n)

{

    //rnd.Random(n)返回0~n-1之间的随机整数

    RandomNumber rnd;

    int m=floor(sqrt(double(n)));

    unsigned int a=rnd.Random(m-2)+2;

    return (n%a!=0);

}       

       算法Prime返回false,算法幸运地找到n的一个非平凡因子,因此可以肯定n是一个合数.但是对于上述算法Prime来说,即使n是一个合数,算法仍可以高概率返回true.例如,n=2653=43*61,算法在2~51范围内随机选择一个整数a,仅当选择到a=43,算法返回false.其余情况均返回true.2~51范围内选到a=43的概率约为2%,因此算法以98%的概率返回错误的结果true.n增大时,情况就更糟.

       著名的费马小定理为素数判定提供一个有力的工具

 

费马小定理:

评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值