Thursday, May 31, 2018

UVA - 11289 .cpp file

#include<bits/stdc++.h>
using namespace std;
#define max 31700
bool p[31700];
long M(long  b, long p, long m)
{
    if(p==0) return 1;
    else if(p%2==0) return ((M(b,p/2,m))*(M(b,p/2,m)))%m;
    return ((b%m)*M(b,p-1,m))%m;
}
int sieve()
{
    memset(p,1,sizeof(p));
    p[0]=p[1]=0;
    for(int i=2; i<=sqrt(max); i++)
        if(p[i])
            for(int j=i*i; j<max; j+=i)p[j]=0;
    return 0;
}
int main()
{
    int pr,a;
    sieve();
    while(cin>>pr>>a)
    {
        if(!pr&&!a) break;
        if(p[pr]==true) cout<<"no"<<endl;
        else
        {
            if(M(a,pr,pr)==a) cout<<"yes"<<endl;
            else cout<<"no"<<endl;
        }
    }
    return 0;
}

No comments:

Post a Comment