代码改变世界

Sicily/1454. Pseudoprime numbers

2011-07-30 23:25  Min·zc  阅读(192)  评论(0编辑  收藏  举报

快速幂取模和素性检测

 

#include <iostream>
using namespace std;
int prime(long long n)
{
        if(n==1)
                return 1;
        for(int i=2;i*i<=n;i++)
                if(n%i==0)
                        return 1;
        return 0;
}
long long mod(long long a,long long b,long long k)
{
        long long tem=a;
        long long ret=1;
        while(b)
        {
                if(b&1)
                        ret=ret*tem%k;
                tem=tem*tem%k;
                b>>=1;
        }
        return ret;
}
int main()
{
        long long a,b;
        while(cin>>a>>b&&a!=0&&b!=0)
        {
                int ans=prime(a);
                long long t=mod(b,a,a);
                if(t!=b||ans==0)
                        cout<<"no"<<endl;
                else
                        cout<<"yes"<<endl;
        }
}