1 solutions
-
0
这个题就是模板题哒,就像背景中写的那样。
先判断p是否是素数,如果不是的话,再用快速幂计算a^p(modp)的值是否为a就行。代码如下:
#include<iostream> #include<math.h> using namespace std; long long Gpow(long long a,long long b,long long mod)//快速幂计算 { long long r=1; while (b!=0) { if (b%2==1) { r=((r%mod)*(a%mod))%mod; } a=((a%mod)*(a%mod))%mod; b/=2; } return r; } int isprime(long long s)//判断素数 { if (s==1) { return 0; } if (s==2) { return 1; } for (long long i=2;i<=sqrt(s);i++) { if (s%i==0) { return 0; } } return 1; } int main() { int T; cin>>T; while(T--) { long long p,a; cin>>p>>a; int ans1; ans1=isprime(p); if (ans1==1) { cout<<"no"<<endl; continue; } long long ans2=Gpow(a,p,p); if (ans2==a) { cout<<"yes"<<endl; } else { cout<<"no"<<endl; } } return 0; }
- 1
Information
- ID
- 6690
- Time
- 1000ms
- Memory
- 256MiB
- Difficulty
- 5
- Tags
- (None)
- # Submissions
- 58
- Accepted
- 23
- Uploaded By