题解 | #素数回文#
素数回文
https://www.nowcoder.com/practice/d638855898fb4d22bc0ae9314fed956f
#include <stdio.h>
#include <math.h>
int main() {
int a, b = 0;
scanf("%d", &a);
/*变成回文数*/
// 先组成回文数
char strNum[10] = {0};
while (a > 0) {
strNum[b] = a % 10;
a /= 10;
b++;
}
b -= 1; // 左边所需回文对称长度
int d = b * 2 + 1; // 总回文长度
long hui = 0;
// 变数字回文数
for (int i = 0; i < d; i++) {
int num = 0;
if (i <= b) {
num = strNum[b - i];
} else {
num = strNum[i - b];
}
long getTen = 1;
for (int j = i; j > 0; j--) {
getTen *= 10;
}
hui += num * getTen;
}
/*判断是否是素数*/
int isPrime = 1;
for (int i = 2; i < sqrt(hui); i++) {
if (hui % i == 0) {
isPrime = 0;
break;
}
}
if (isPrime) {
printf("prime");
} else {
printf("noprime");
}
return 0;
}
