#include<bits/stdc++.h>
using namespace std;
int t,a,p;
int ksm(int a,int b,int p){
int s=1;
while(b){
if(b&1) s=s*a%p;
b>>=1;
a=a*a%p;
}
return s;
}
int main() {
cin>>t;
while(t--){
cin>>a>>p;
bool ok=1;
for(int i=2;i<=sqrt(p-1);i++){
if((p-1)%i==1) continue;
if(ksm(a,i,p)==1||ksm(a,(p-1)/i,p)==1){
ok=0;
break;
}
}
cout<<(ok?"Yes":"No")<<'\n';
}
return 0;
}
题解也看了,没发现错误。
第一个解决问题的dalao可获得我小号 Moya_calc 的关注,谢谢!!!