Miller-Rabin求质数为啥错了
  • 板块学术版
  • 楼主Alea
  • 当前回复6
  • 已保存回复6
  • 发布时间2023/2/14 23:26
  • 上次更新2023/10/24 00:45:09
查看原帖
Miller-Rabin求质数为啥错了
322792
Alea楼主2023/2/14 23:26
#include <iostream>
#define int long long
using namespace std;
int fastpow(int b,int e,int m){
    if(b==1||e==0) return 1;
    int r=fastpow(b*b%m,e/2,m)%m;
    if(e%2!=0) r=r*b%m;
    return r%m;
}
bool isprime(int p){
    //a^(p-1)%p=1.
    if(p==1) return false;
    int pr[30]={0,2,3,5,7,11,13,17,19};
    for(int i=1;i<=8;i++) if(p==pr[i]) return true;
    if(p%2==0) return false;
    for(int i=1;i<=8;i++){
        if(p%pr[i]==0&&p!=pr[i]) return false;
        if(fastpow(pr[i],p-1,p)!=1) return false;
    }
    return true;
}
signed main(){
    int a,b,cnt=0;
    cin>>a>>b;
    for(int i=a;i<=b;i++) if(isprime(i)) cnt++;
    cout<<cnt<<endl;
    return 0;
}

0B1090\le B\le10^9BA100000B-A\le100000的情况下WA了,请问为什么?

2023/2/14 23:26
加载中...