PAT 1015

题目 : Reversible Primes

分值 : 20
难度 : 细节题
思路 : 简单的判断素数,问题是按照给定进制反转要注意。
坑点 : 判断素数 2是最小的素数,方便起见,< 2 return 0 ; 
评语 : 细节题,理解题,读入的肯定是十进制,反转用给的进制转换。

具体代码如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include <iostream>
#include "math.h"
using namespace std ;
int is_prime(int value )
{
if(value < 2 )
return 0 ;
if(value == 2 )
return 1 ;
for(int i = 2 ; i <=sqrt(value) ; i++)
{
if(value % i == 0)
return 0 ;
}
return 1 ;
}
int main() {
int N , D ;
cin >> N ;
while( N >=0 )
{
cin >>D ;
int temp=0 , temp2 = 0 ;
temp = N ;
while( temp != 0)
{
temp2 = temp2*D + (temp%D) ;
temp /= D ;
}
if(is_prime(N) && is_prime(temp2))
cout<<"Yes"<<endl ;
else cout <<"No"<<endl ;
cin >> N ;
}

}