题解 | #素数回文#
素数回文
http://www.nowcoder.com/practice/d638855898fb4d22bc0ae9314fed956f
#include <stdio.h>
#include <math.h>
long long hw(long long t)
//定义一个函数用于求一个数的回文数
{
int a = 0;
long long b = t;
for (; b != 0;)
{
b /= 10;
a++;
}
//先求出要求回文数的值的单位个数
long long d = t;
for (; a > 1;a--)
{
d =(d*10 + t / 10 % 10);
t /= 10;
}
//根据要求回文数的值的单位个数来计算他的回文数,如果是两位数,它的回文数就是自己*10再加上
//自己除10然后取余10的值,两位数以上,多一位就再循环一次
return d;
}
int su(long long t)
//定义一个函数用来判断素数
{
long long a;
int b = 0;
if (t % 2 == 0)
{
return 0;
}
long double c = sqrt(t);
for (a = 3; a < c; a+=2)
{
if ((t % a) == 0)
{
b++;
break;
}
}
//这个判断是抄别人的,我也没看懂emmm
if (b == 0)
{
return 1;
}
//是素数,返回1
else
{
return 0;
}
//不是素数,返回0
}
int main()
{
long long t;
//定义一个变量t作为输入的数值
scanf("%lld", &t);
t = hw(t);
//调用函数求出t的回文数
t = su(t);
//调用函数判断t是否为素数
if (t == 1)
{
printf("prime");
}
//如果函数返回的值为1,1为真,是素数,则打印prime
else if (t == 0)
{
printf("noprime");
}
//如果函数返回的值为0,0为假,不是素数,则打印noprime
return 0;
}