POJ 1811 Prime Test

来源:互联网 发布:贵州省大数据培训中心 编辑:程序博客网 时间:2024/05/21 09:36

利用Miller_Rabin算法进行大素数的测试,以及利用Pollard_Rho算法找因子

 

其中Miller_Rabin算法主要利用了费马小定理和二次探测定理,具体可以参考算法导论

 

一开始对Pollard_Rho算法采用随机种子的启发式思想没有理解好,以为只取一个种子就好,其实应该是每找到一个非平凡因子或者出现重复后就退出,重新选择随机种子进行测试,而大牛的判断找到因子是否为素数以及二分查找最小素因子的思想确实太精髓了,换作我的话只会进行若干次Pollard_Rho算法,然后选出最小值=。=

 

一开始老是超时,死循环,后来发现是取模运算的时候可能溢出了而没有处理,把乘法和求幂取模都手写优化后过了

不过,网上流传的模板里C具体有什么用不是很了解,个人觉得是为了防止用定值时,由于随机数和原来一样而导致该次找因子失效

 

代码:

 

原创粉丝点击