题目链接http://acm.hdu.edu.cn/showproblem.php?pid=1905

题意:给一个 p 和 一个 a,如果这个p 本身就是一个素数,就输出 no,如果不是素数,那么计算  ( a ^ p) % p 如果结果等于 a 那么输出 yes 否则输出 no

也就是伪素数。

View Code
 1 #include<stdio.h>
 2 #include<math.h>
 3 __int64 jud(__int64 n)
 4 {
 5     __int64 i;
 6     for(i=2;i*i<n;i++)
 7         if(n%i==0)
 8         return 0;
 9    return 1;
10 }
11 __int64 sum(__int64 a,__int64 p,__int64 m)
12 {
13     __int64 s;
14     if(p==0)
15         return 1;
16     if(p%2==0)
17     { 
18         s=sum(a,p/2,m);
19       return (s*s)%m; 
20     }
21     else
22         return 
23         (a%m)*sum(a,p-1,m)%m;
24 
25 }
26 int main()
27 {
28     __int64 p,a,i;
29     while(~scanf("%I64d %I64d",&p,&a))
30     {
31         if(p==0&&a==0)
32             break;
33         if(jud(p))
34         {
35             printf("no\n");
36             continue;
37         }
38         if(sum(a,p,p)==a)
39             printf("yes\n");
40             else
41             printf("no\n");
42     }
43     return 0;
44 }

 

 

相关文章:

  • 2019-08-05
  • 2022-12-23
  • 2021-08-06
  • 2022-12-23
  • 2021-12-29
  • 2022-02-08
  • 2021-09-06
  • 2022-12-23
猜你喜欢
  • 2021-10-07
  • 2021-07-02
  • 2021-10-07
  • 2022-12-23
  • 2021-11-12
相关资源
相似解决方案