Miller-Rabin快速素性判断
利用 二次探测定理和 费马小定理
二次探测定理:
是奇素数
当且仅当 或者
我们结合费马小定理,对于将要检验的数 ,使用一个底数
若 则一定不是质数
令 ,我们取
对其进行 次二次探测检验,再将最后的结果进行 Fermat 素性测试
四个底数已经可以在 内实现确定性素性测试
可以在 内确定性判素
点击查看代码
ll qpow(ll a, ll p, ll mod) {
ll base = 1;
for(; p; p >>= 1, a = mul(a, a, mod))
if(p & 1) base = mul(base, a, mod);
return base % mod;
}
ll Test[10] = {2, 3, 5, 7, 11, 13, 17};
bool Query(ll P) {
if(P == 1) return 0;
ll t = P - 1, k = 0;
while(!(t & 1)) k++, t >>= 1;
for(int i = 0; i < 4; i++) {
if(P == Test[i]) return 1;
// Test[i] = rr(1, P-2);
ll a = qpow(Test[i], t, P), nxt = a;
for(int j = 1; j <= k; j++) {
nxt = mul(a, a, P);
if(nxt == 1 && a != 1 && a != P - 1) return 0;
a = nxt;
}
if(a != 1) return 0;
}
return 1;
}
作者:cdsidi
出处:https://www.cnblogs.com/cdsidi/p/16760148.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】