码迷,mamicode.com
首页 > 其他好文 > 详细

PAT:1015. Reversible Primes (20) AC

时间:2015-03-06 12:23:02      阅读:130      评论:0      收藏:0      [点我收藏+]

标签:

#include<stdio.h>
#include<math.h>
#include<algorithm>
using namespace std;

int D[111];          //存放拆解的数字
int DI=0;          //D的数组下标

bool isPrime(int n)
{
  if(n<=1)
    return 0;
  int sqr=(int)sqrt(1.0*n);
  for(int i=2 ; i<sqr+1 ; ++i)
    if(0==n%i)
      return 0;
  return 1;
}

int main()
{
  int n,d;
  while(scanf("%d",&n)!=EOF)
  {
    if(n<0)            //循环退出的条件
      break;
    scanf("%d",&d);
    if(isPrime(n)==1)      //输入数字是素数
    {
      DI=0;
      do            //【skill】do……while法。转为d进制
      {
        D[DI++]=n%d;
        n/=d;
      }while(n!=0);
      int n2=0;
      for(int i=0 ; i<DI ; ++i)  //生成n逆序的d进制数n2
      {
        n2=n2*d+D[i];      //【warining】n2=千万不要习惯性写成n2+=!!!!!
      }

      if(isPrime(n2)==1)    //也是素数,则Yes
      {
        printf("Yes\n");
        continue;
      }
    }
    printf("No\n");        //转变数不是素数或者输入就不是素数,直接No
  }
  return 0;
}

PAT:1015. Reversible Primes (20) AC

标签:

原文地址:http://www.cnblogs.com/Evence/p/4317805.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!