码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2020-07-19 11:49:20      阅读:64      评论:0      收藏:0      [点我收藏+]

标签:space   其他   else   pac   pat   clu   链接   bool   rev   

题目

题目链接
已知一个十进制数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\n");
			continue;
		}
		int temp = r_convert(convert(n,d),d);
		if(isPrime(temp))printf("Yes\n");
		else printf("No\n");
	}
	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\n");
			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\n");
		else printf("No\n");
	}
	return 0;
}

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

标签:space   其他   else   pac   pat   clu   链接   bool   rev   

原文地址:https://www.cnblogs.com/houzm/p/13338664.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!