1015. Reversible Primes (20)

题目:

https://www.patest.cn/contests/pat-a-practise/1015

大概描述:

给定一个数和一个进制,先判断该数是否是素数,在求这个数在该进制下的转置数的十进制是否是素数

特征词:

素数   进制

使用语言:

C++

解题思想:

判断素数加进制转化加转置

题目得分:

18

提交次数:

5

时间

50分钟

代码

#include<cstdio>
#include<cmath>
int pprime(int a){
 int i = 0;
 //printf("&&&&");
 for(i = 2;i < (sqrt(a) + 1);i++){
 // printf("^^^^");
 if(a % i == 0)
 return 0;
 }
 return 1;
}
int rett(int a,int ret){
 int i = 0;
 char s[20];
 while(a != 0){
 s[i++] = a % ret;
 a = a / ret;
 }
 int t = 1;
 int b = 0;
 i --;
 while(i >= 0){
 b += s[i] * t;
 t *= ret;
 i --;
 }
 //printf("%d\n",b);
 return b;
}
int main(){
 int a = 0;
 int ret ;
 do{
 scanf("%d",&a);
 if(a < 0)
 return 0;
 else
 scanf("%d",&ret);
 // printf("OK\n");
 if(a == 1||pprime(a) == 0){
 printf("No\n");
 }
 // printf("OKKK\n");
 else{
 if(pprime(rett(a,ret)) == 1)
 printf("Yes");
 else
 printf("No");
 printf("\n");
 }
 }while(1);

}

运行结果

18

 成长

什么都不想说了,“风在吼,马在叫…….”

发表评论

电子邮件地址不会被公开。 必填项已用*标注