首页 > 其他 > 详细

PAT-1015 Reversible Primes (20)

时间:2014-09-18 22:13:54      阅读:372      评论:0      收藏:0      [点我收藏+]
#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=n;
       while(true)
       {
          int mod = data%d;
          s.push(mod);
          data=data/d;
          if(data==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)

原文:http://www.cnblogs.com/championlai/p/3980076.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!