PAT-A 1015. Reversible Primes

来源:互联网 发布:caj文件打开软件 编辑:程序博客网 时间:2024/05/22 04:39

1015. 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.

Input Specification:

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.

Output Specification:

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

Sample Input:

73 1023 223 10-2

Sample Output:

YesYesNo

程序代码:

#include<stdio.h>#include<math.h>#include<string.h>int convert(int n,int d);int isPrime(int n);int main(){    int N,D;    int ans;    while(1)    {        scanf("%d",&N);        if(N<0)            break;        scanf("%d",&D);        ans= convert(N,D);        if(isPrime(N)&&isPrime(ans))        {            printf("Yes\n");        }        else            printf("No\n");    }}int convert(int n,int d){    char ans[100]={0};    int  i=0;    while(n)    {        ans[i++]=n%d+'0';        //此处必须保存字符,不能直接保存数字,因为0与字符串结束符'\0'的值一样        n=n/d;    }    ans[i]='\0';    int sum = 0;    int len = strlen(ans);    for(i=0;i<len;i++)    {        sum = sum*d+(ans[i]-'0');    }    return sum;}int isPrime(int n)   {    if(n<2)        return 0;    int i=2;    for(i=2;i<=sqrt(n);i++){        if((n%i)==0)            return 0;    }    return 1;}
0 0