题意:检验一个数是否是质数,且满足ap = a (mod p)
题解:快速幂,质数检验
1 #include<iostream>
2 #include<cstdio>
3 #include<algorithm>
4 #include<cmath>
5 using namespace std;
6 long long power(long long a,long long b,long long c)
7 {
8 long long res,t;
9 res=1;
10 t=a%c;
11 while(b)
12 {
13 if(b&1)
14 {
15 res*=t;
16 res%=c;
17 }
18 t*=t;
19 t%=c;
20 b>>=1;
21 }
22 return res;
23 }
24 bool is_prime(int x)
25 {
26 bool res=true;
27 for(int i=2;i<=sqrt(x);i++)
28 {
29 if(x%i==0)
30 {
31 res=false;
32 }
33 }
34 return res;
35 }
36 int main()
37 {
38 long long p,a;
39 while(true)
40 {
41 cin>>p>>a;
42 if(p==0&&a==0)
43 {
44 break;
45 }
46 if(is_prime(p))
47 {
48 cout<<"no\n";
49 continue;
50 }
51 if(power(a,p,p)==a)
52 {
53 cout<<"yes\n";
54 }
55 else
56 {
57 cout<<"no\n";
58 }
59 }
60 return 0;
61 }