POJ 1811 Prime Test

22 篇文章 0 订阅

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

 

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

 

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

 

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

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

 

代码:

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值