标签:个数 pow log 一个 for return std ret namespace
题意:检验一个数是否是质数,且满足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 }
标签:个数 pow log 一个 for return std ret namespace
原文地址:http://www.cnblogs.com/shao0099876/p/7411105.html