PAT甲级 Reversible Primes

描述

A reversible prime in any number system is a prime whose "reverse" in that number system is also a prime. For example in the decimal system 73 is a reversible prime because its reverse 37 is also a prime.

Now given any two positive integers N (< 105) and D (1 < D <= 10), you are supposed to tell if N is a reversible prime with radix D.

输入

The input file consists of several test cases. Each case occupies a line which contains two integers N and D. The input is finished by a negative N.

输出

For each test case, print in one line "Yes" if N is a reversible prime with radix D, or "No" if not.

样例输入

73 10

23 2

23 10

-2

样例输出

Yes

Yes

No

判断素数和数制转换

#include <stdio.h>
#include <math.h>
int prime(int n)
{
    int  i,j=sqrt(n);
    for(i=2;i<=j;i++)
    {
        if(n%i==0)
        return 0;
    }
    return 1;
 } 
int ss(int n,int m)
{
    int i=0,s=0,h,a[100001]={0};
    while(n)
    {
        a[i]=n%m;
        n/=m;
        i++;
    }
    for(h=0;h<=i-1;h++)
    {
        s=s*m+a[h];
    }
    return s;
 } 
 int main()
 {
     int n,m,i;
     while(scanf("%d",&n),n>0)
     {
         scanf("%d",&m);
         if(prime(n)==1&&prime(ss(n,m))==1)
         {
             printf("Yes\n");
        }
        else printf("No\n");
     }
     return 0;
 }
posted @ 2018-01-28 20:48  极限之旅  阅读(111)  评论(0编辑  收藏  举报