#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; // 程序正常结束
}