PAT-Advanced Level -1015 判断素数反转后是否是素数

来源:互联网 发布:网上代购彩票源码 编辑:程序博客网 时间:2024/05/17 04:56

链接:http://www.patest.cn/contests/pat-a-practise/1015

输入 :N  D        N (< 105) and D (1 < D <= 10)

输出 :Yes/No

如果N是素数并且N在D进制下反转后 仍然是素数,则输出Yes,否则No

【分析】先构造105以内的素数表,然后求反转,判断并输出结果

     构造素数表参考博客  http://blog.csdn.net/anqier0468/article/details/9986721

#include<cstdio>#include<cstring>#include<iostream>#include<cstdlib>using namespace std;bool prime[100010];void init(){    memset(prime,true,sizeof(prime));    prime[0]=false;    prime[1]=false;    for(int i=2;i*i<100000;i++)    {        for(int j=2;j*i<100000;j++)        {            prime[j*i]=false;        }    }}int reverse_(int num,int d){    int r[100000];    int cnt=0;    while(num)    {        r[cnt++]=num%d;        num/=d;    }    int a=0;    for(int i=0;i<cnt;i++)    {        a=a*d+r[i];    }    return a;}int main(){//    freopen("in.txt","r",stdin);     init();     int num,d;     while(cin>>num&&num>=0)     {         cin>>d;        int ans= reverse_(num,d);        if(prime[ans] && prime[num])            cout<<"Yes"<<endl;        else cout<<"No"<<endl;     }     return 0;}



0 0
原创粉丝点击