1905.cpp

来自「杭电 acm部分代码 有兴趣的可以下载 谢谢」· C++ 代码 · 共 38 行

CPP
38
字号
#include<stdio.h>
#include<math.h>
int prime(__int64 n){
    __int64 t=sqrt(double(n));
    if(n==2)    return 1;
    for(__int64 i=3;i<=t;i+=2)
        if(n%i==0)  return 0;
    return 1;
}
__int64 pow_mod(__int64 a,__int64 p,__int64 n){
    __int64 k=1;
    while(p>1){
        if(p%2==1)  k=a*k%n;
        a=a*a%n;
        p/=2;
    }
    return a*k%n;
}
int main()
{
    __int64 p,a;
    while(scanf("%I64d%I64d",&p,&a)==2){
        if(p==0&&a==0)
            break;
        if(prime(p)==1){
            printf("no\n");
            continue;
        }
        __int64 t=p;
        __int64 x=1,y=a,n=0;
        if(pow_mod(a,p,t)==a)
            printf("yes\n");
        else
            printf("no\n");
    }
    return 0;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?