POJ 1811 Prime Test(大素数判断+大合数素因子分解)

题意:判断n(n<2^54)是否为素数,如果不是,那么输出n最小的因子。

思路:这题肯定不能用普通的枚举来做,

对于判断大素数,可以用Miller_Rabin随机算法进行素性检验,而分解素因数可以使用Miller_Rabin搭配Pollard_rho算法进行分解,Miller_Rabin算法出错的概率小于2^(-s),s为测试的数据个数,如果不放心的话可以多试几组,在实际应用中是一种很好的随机化算法,Pollard_rho算法理论复杂度在O(n^(1/4))左右,实际中表现也很好,

ps:看了算法导论好久.....终于弄懂,整理了一个模板。

#include<cstdio>
#include<cstring>
#include<cmath>
#include<cstdlib>
#include<iostream>
#include<algorithm>
#include<vector>
#include<map>
#include<queue>
#include<stack>
#include<string>
#include<map>
#include<set>
#include<ctime>
#define eps 1e-6
#def
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值