伪素数,只要看懂题别把素数算进来算就ok
#include<stdio.h>
#include<math.h>
__int64 quickpow(int n,int m,int t) {
__int64 ans=1,base=n;
while(m) {
if(m&1) {
ans=ans*base%t;
}
base=base*base%t;
m>>=1;
}
return ans;
}
bool judge(int p) {
for(int l=2; l<=sqrt(p); l++) {
if(p%l==0)
return true;
}
return false;
}
int main() {
int p,a;
while(scanf("%d %d",&p,&a),p||a) {
__int64 t;
if(judge(p)) {
t=quickpow(a,p,p);
if(t==a)
printf("yes\n");
else
printf("no\n");
} else
printf("no\n");
}
return 0;
}
本文介绍了一个用于判断伪素数并利用快速幂算法进行相关运算的C语言程序。该程序首先通过一个简单的素数检测方法来判断输入的整数是否为伪素数,然后使用快速幂算法计算特定条件下的表达式。适用于竞赛编程和算法学习。
267

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



