[PAT-A 1015]Reversible Primes

在这里插入图片描述
题目大意:
给出正整数N和进制radix,如果N是素数,且N在radix进制下反转后的数在十进制下也是素数,则输出"Yes",否则输出"No"。

思路:
1)判断N逆否是素数,如果是素数,进入步骤2,如果不是素数,输出"No".
2)将N转换为radix进制,保存与数组中。然后采用逆序遍历的方式重新转换为十进制,如果转换之后的数为素数,则输出"YES",否则输出"No"。

AC代码:

//PAT_A 1015
#include<cstdio>
#include<cmath>
using namespace std;
bool isPrime(int n) {
	if (n <= 1)return false;
	int sqr = (int)sqrt(n * 1.0);
	for (int i = 2; i <= sqr; i++) {
		if (n % i == 0)return false;
	}
	return true;
}
int d[111];
int reverse_radix(int n, int radix) {//将n转换为radix进制反转之后再返回
	int len = 0, ans = 0;
	while (n != 0) {
		d[len++] = n % radix;
		n /= radix;
	}
	for (int i = 0; i < len; i++) {
		ans = ans * radix + d[i];;
	}
	return ans;
}
int main() {
	int n, radix;
	while (scanf("%d", &n) != EOF) {
		if (n < 0)break;
		(void)scanf("%d", &radix);
		if (isPrime(n) == false)printf("No\n");
		else {
			int temp = reverse_radix(n, radix);
			if (isPrime(temp) == true)printf("Yes\n");
			else printf("No\n");
		}
	}
	return 0;
}
发布了142 篇原创文章 · 获赞 1 · 访问量 4577

猜你喜欢

转载自blog.csdn.net/weixin_44699689/article/details/104281155
今日推荐