首页 > 代码库 > PAT-1015 Reversible Primes (20)

PAT-1015 Reversible Primes (20)

#include<stdio.h>#include<cmath>#include<algorithm>#include<stack>using namespace std;int main(){    int n,d;    stack<int> s;    //freopen("1015-in.txt","r",stdin);   //freopen("1015-out.txt","w",stdout);    while(true)    {       scanf("%d",&n);       if(n<0)         break;       scanf("%d",&d);              bool flag=false;       for(int i=2;i<=sqrt(n*1.0);i++)       {         if(n%i==0)         {            flag=true;            break;         }       }       if(flag)       {          printf("No\n");          continue;       }       int data=http://www.mamicode.com/n;       while(true)       {          int mod = data%d;          s.push(mod);          data=data/d;          if(data=http://www.mamicode.com/=0)            break;       }        int exp=0;       int sum=0;       while(!s.empty())       {          int num=s.top();          sum+=num*pow(d*1.0,exp);          exp++;          s.pop();       }       //printf("%d\n",sum);       for(int i=2;i<=sqrt(sum*1.0);i++)       {         if(sum%i==0)         {            flag=true;            break;         }       }       if(flag||sum<2)       {          printf("No\n");       }       else       {          printf("Yes\n");       }    }    fclose(stdin);    fclose(stdout);        return 0;} 
给定十进制n和d,n的d进制数反转之后转换十进制数m,判定n和m是否均为素数
一个special case
2 2
2转换成二进制后变成10,反转01,再变成十进制是1,显然不是素数了。不要理所当然就认为给的数就一定是素数。

PAT-1015 Reversible Primes (20)