Pseudoprime numbers伪素数(快速幂+判定素数)
http://acm.sdut.edu.cn/sdutoj/showproblem.php?pid=1469&cid=1142
View Code
1 #include<stdio.h> 2 #include<math.h> 3 int isprime(long n) 4 { 5 long i,k; 6 k=sqrt(n); 7 for(i=2;i<=k;i++) 8 { 9 if(n%i==0) 10 return 0; 11 } 12 return 1; 13 } 14 long mod(long a,long n,long p) 15 { 16 long t; 17 if(n==0) return 1%p; 18 if(n==1) return a%p; 19 t=mod(a,n/2,p); 20 t=t*t%p; 21 if(n%2==1) t=t*a%p; 22 return t; 23 } 24 int main() 25 { 26 long p, a ; 27 while(scanf("%ld %ld",&p, &a),p!=0&&a!=0) 28 { 29 if(isprime(p)) 30 printf("no\n") ; 31 else 32 { 33 if(a==mod(a, p, p)) 34 printf("yes\n") ; 35 else printf("no\n") ; 36 } 37 } 38 return 0; 39 } 40