A1015. Reversible Primes (20)

 

时间限制
400 ms
内存限制
65536 kB
代码长度限制
16000 B
判题程序
Standard
作者
CHEN, Yue

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
-2
Sample Output:
Yes
Yes
No

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

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


int main(){
    int n,radix;
    int a[100]={0};
    //scanf("%d %d",&n,&radix);
    while(scanf("%d",&n)!=EOF)
    {
    	if(n<0)break;
    	scanf("%d",&radix);
    	if(isPrime(n)==false)
    	{
    		printf("No
");
    	}
    	else
    	{
    		int len=0;//进制转换
			do{
				a[len++]=n%radix;
				n/=radix;
			}while(n!=0);
			for(int i=0;i<len;i++)
			{
				n=n*radix+a[i];
			} 
			if(isPrime(n)==false)printf("No
");
			else printf("Yes
");
    	}
    }
    return 0;
}

  

原文地址:https://www.cnblogs.com/ligen/p/4304859.html