PAT A1015 Reversible Primes (20分) [素数 质数 进制转换]

Posted houzm

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PAT A1015 Reversible Primes (20分) [素数 质数 进制转换]相关的知识,希望对你有一定的参考价值。

题目

题目链接
已知一个十进制数n,和基数m,判断 n是否为质数;且n转换为m进制并反转后对应的十进制数是否为质数

解题思路

1 质数判断
2 进制转换

易错点

1 输入的不一定为质数,题目要求判断两个内容: n是否为质数;n转换为m进制并反转后对应的十进制数是否为质数
2 m<=10,所以十进制进行转换后,一定不会出现字母

单词语法

negative 负数
positive 正数
reversible 可逆的

代码

Code 01

#include <iostream>
#include <cstring>
#include <cmath>
#include <algorithm>
using namespace std;
/*
	1 进制转换
	2 质数判别
*/
// 十进制转换到其他进制 - 10进制以内
string  convert(int x,int r) {
	string y;
	int temp;
	do {
		temp=x%r; //题目已知temp一定小于10
		if(temp>=10)y+=temp-10+‘A‘;
		else y+=temp+‘0‘;
		x/=r;
	} while(x!=0);
	return y;//不需反转,因为题目中就是求反转后是否是质数
}
// 其他进制转十进制
int r_convert(string y, int r) {
	int index =0,sum=0,temp;
	for(int i=y.length()-1; i>=0; i--) {
		temp = isdigit(y[i])?y[i]-‘0‘:y[i]-‘A‘+10;
		sum+=temp%10*pow(r,index++);
	}
	return sum;
}
// 素数判别
bool isPrime(int x){
	if(x<=1)return false;
	int sqr = (int)sqrt(1.0*x); 
	for(int i=2;i<=sqr;i++){
		if(x%i==0)return false;
	}
	return true;
} 
int main(int argc,char * argv[]) {
	int n,d;
	while(1) {
		scanf("%d",&n);
		if(n<0)break;
		scanf("%d",&d);
		if(!isPrime(n)){
			printf("No
");
			continue;
		}
		int temp = r_convert(convert(n,d),d);
		if(isPrime(temp))printf("Yes
");
		else printf("No
");
	}
	return 0;
}

Code 02

#include <iostream>
#include <algorithm>
#include <cmath>
using namespace std;
bool isPrime(int n) {
	if(n<=1)return false;
	int sqr=(int)sqrt(1.0*n);
	for(int i=2; i<=sqr; i++) {
		if(n%i==0)return false;
	}
	return true;
}
int main(int argc, char * argv[]) {
	int n,radix;
	while(scanf("%d",&n)!=EOF) {
		if(n<0)break;
		scanf("%d",&radix);
		if(isPrime(n)==false){
			printf("No
");
			continue;
		}
		// 进制转换
		int index=0,d[111]={0};
		do{
			d[index++]=n%radix;
			n/=radix;
		} while(n!=0);
		for(int i=0;i<index;i++){
			n=n*radix+d[i];
		}
		if(isPrime(n))printf("Yes
");
		else printf("No
");
	}
	return 0;
}





以上是关于PAT A1015 Reversible Primes (20分) [素数 质数 进制转换]的主要内容,如果未能解决你的问题,请参考以下文章

A1015 Reversible Primes (20分)(素数判断,进制转换)

PAT 1015. Reversible Primes

PAT1015:Reversible Primes

pat 1015 Reversible Primes(20 分)

PAT 甲级 1015 Reversible Primes

PAT 1015 Reversible Primes (判断素数)