PollardRho求条
  • 板块灌水区
  • 楼主Alea
  • 当前回复2
  • 已保存回复2
  • 发布时间2023/9/27 09:14
  • 上次更新2023/11/2 17:55:00
查看原帖
PollardRho求条
322792
Alea楼主2023/9/27 09:14

啊啊啊啊啊第三次了

int mul(int a,int b,int p){
    int x=0,y=a%p;
    while(b){
        if(b&1) x=(x+y)%p;
        y=y*2%p;
        b/=2;
    }
    return x;
}
int pow(int b,int e,int p){
    int x=1,y=b;
    while(e){
        if(e&1) x=mul(x,y,p);
        y=mul(y,y,p);
        e/=2;
    }
    return x;
}
int gcd(int a,int b){
    return b==0?a:gcd(b,a%b);
}
bool isprime(int p){
    default_random_engine e;
    uniform_int_distribution<int> u(1,p);
    if(p<2) return false;
    if(p==2) return true;
    if(!(p&1)) return false;
    int q=p-1;
    while(!(q&1)) q>>=2;
    for(int i=1;i<=30;i++){
        int a=u(e),t=q,m=pow(a,t,p);
        while(t!=p-1&&m!=1&&m!=p-1) m=mul(m,m,p),t*=2,cout<<"haore"<<endl;
        if(m!=p-1&&!(t&1)) return false;
    }
    return true;
}
2023/9/27 09:14
加载中...