#include <stdio.h>
int isPrime(int x)
{
int i;
if(x==2)
return 1;
if(x%2==0)
return 0;
for(i=3;i*i<=x;i+=2)
if(x%i==0)
return 0;
return 1;
}
long long func(long long a,int p)
{ // 计算n的p次方
long long k=1;
int mod=p;
while(p>=1)
{
if(p&1) // 判断p是否奇数,偶数的最低位必为0
k=k*a%mod;
a=a*a%mod;
p>>=1;
}
return k;
}
int main()
{
int a,p;
long long res;
while(scanf("%d %d",&p,&a))
{
if(p==0||a==0)
break;
res=func(a,p);
if((res==a%p)&&!isPrime(p))
printf("yes\n");
else
printf("no\n");
}
return 0;
}hdu1905 Pseudoprime numbers
最新推荐文章于 2018-12-07 21:01:37 发布
本文介绍了一个用于判断素数的函数和一个高效计算幂运算的函数。通过这两个函数,可以验证给定的底数a和指数p是否满足特定条件:a的p次方模p的结果是否等于a模p,并且p不是素数。该文适用于需要进行快速幂运算及素数判断的场景。
235

被折叠的 条评论
为什么被折叠?



