关于miller rabin
  • 板块学术版
  • 楼主logfk
  • 当前回复13
  • 已保存回复13
  • 发布时间2021/7/11 19:26
  • 上次更新2023/11/4 15:04:38
查看原帖
关于miller rabin
100619
logfk楼主2021/7/11 19:26

从网上找了一个,但是莫名其妙判不过去,某题的数据范围小于 1e101e10,换成暴力后就过了,求查错/kk


ll Test[17] = {2, 3, 5, 7, 11, 13, 17,19,23,29,31,37,41,43,47,53,59};
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 < 17; i++) {
        if(P == Test[i]) return 1;
        ll a = pow(Test[i], t, P), nxt = a;
        for(int j = 1; j <= k; j++) {
            nxt = (a * a) % P;
            if(nxt == 1 && a != 1 && a != P - 1) return 0;
            a = nxt;
        }
        if(a != 1) return 0;
    }
    return 1;
}
2021/7/11 19:26
加载中...