您的位置:首页 > 运维架构

sicily 1454. Pseudoprime numbers

2011-07-05 02:00 357 查看
#include<iostream>
#include<stdio.h>
#include<cmath>
using namespace std;
int is_prime(int x)
{
int m=floor(sqrt((double)x)+0.5);
for(int i=2;i<=m;++i)
if(x%i==0)
return 0;
return 1;
}
int power(int a,int b,int m)    //快速幂取模计算 (a^b)%m
{
if(a==0)
return 0;
else if(b==0)
return 1;
long long r=a%m,k=1;
while(b>1)
{
if((b&1)==1)
k=(k*r)%m;
r=(r*r)%m;
b=b>>1;
}
return (r*k)%m;
}
int main()
{
int p,a;
while(scanf("%d%d",&p,&a) && p )
{
if( !is_prime(p) && power(a,p,p)==a )
printf("yes\n");
else
printf("no\n");
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: