题目链接:http://www.patest.cn/contests/pat-a-practise/1015
题目:
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 10 23 2 23 10 -2Sample Output:
Yes Yes No
分析:
判断是否是质数,以及加上数制转换。
这里的是指原数字与它在数制下的倒叙,如23 2,是10111(2)的倒叙11101的真实数字。判断原数与倒叙数字是否都是质数判别。
案例分析:
73 10,73是质数,10进制下的倒叙数是37,也是质数,Yes
23 2, 23是质数,2进制下表示为10111,倒叙数是11101,转换为10进制为29,也是质数,Yes
23 10,23是质数,10进制下的倒叙数是32,不是质数,No
AC代码:
#include<stdio.h> using namespace std; bool isPrime(int num1){//判断是否是质数 if(num1 < 2) return false; if(num1 == 2 || num1 == 3)return true; for(int i = 2; i * i <= num1; i ++){ if(num1 % i == 0)return false; } return true; } int rev_num(int num1,int radix){//判断基数radix下的倒叙数(还是转换为10进制的) int num2 = 0; while(num1){ num2 *= radix; num2 += num1 % radix; num1 /= radix; } return num2; } int main(void){ int n,d; while(scanf("%d",&n) != EOF){ if(n < 0) break;//输出是以复数作为结束的 scanf("%d",&d); int n_rev; n_rev = rev_num(n,d); if(isPrime(n) == true && isPrime(n_rev) == true) //如果原数和倒叙数都是质数 puts("Yes"); else puts("No"); } return 0; }
——Apie陈小旭
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 10 23 2 23 10 -2Sample Output:
Yes Yes No