#include <stdio.h> // 引入标准输入输出库,用于输入输出函数 #include <math.h> // 引入数学库,用于平方根函数sqrt() // 函数功能:将输入的整数n转换为其对应的回文数 // 回文数是指正读和反读都相同的数(如12321) long long huiwen(long long n) { int a = 0; // 用于记录数字n的位数 long long t = n; // 临时变量,用于计算n的位数 // 计算数字n的位数 while (t != 0) { t /= 10; // 每次除以10,去掉最后一位 a++; // 位数加1 } long long b = n; // 用于构建回文数的变量,初始值为原数n // 根据位数构建回文数(例如n=12,会构建成121) for (a; a > 1; a--) // 循环次数为位数减1 { // 取n的倒数第二位数字,追加到b的末尾 b = (b * 10) + (n / 10 % 10); n /= 10; // 去掉n的最后一位,为下次取倒数第二位做准备 } return b; // 返回构建好的回文数 } // 函数功能:判断一个数是否为素数(质数) // 素数是指大于1且除了1和自身外没有其他因数的自然数 long long sushu(long long n) { int b = 2; // 用于判断因数的变量 if (n == 0 || n == 1) // 0和1不是素数 return 0; else if (n == 2) // 2是素数 return 1; else { if (n % 2 == 0) // 偶数(除2外)不是素数 return 0; // 从3开始,只判断奇数是否为因数,提高效率 for (b = 3; b <= sqrt(n); b += 2) { if (n % b == 0) // 若能被某个数整除,则不是素数 return 0; } return 1; // 没有找到因数,是素数 } } int main() { long long n; // 定义变量n,用于存储输入的数 scanf("%lld", &n); // 从标准输入读取一个长整数 n = huiwen(n); // 将n转换为对应的回文数 // 判断转换后的回文数是否为素数,并输出相应结果 if (sushu(n) == 1) printf("prime"); // 是素数,输出"prime" else printf("noprime"); // 不是素数,输出"noprime" return 0; // 程序正常结束 }