一道有趣的题
这道题有两个需要注意的地方:
1、这里的回文只有131而无1331这种形式;
2、判断改变后的数是否为素数时,应选择运算速度快的方法,避免运行超时。
代码解析:
#include <bits/stdc++.h>
using namespace std;
//判断变化后的数是否为素数
int prime(int n)
{
if(n == 1)
return 0;
if(n == 2 || n == 3)
return 1;
if(n % 6 != 1 && n % 6 != 5)
return 0;
int tmp = sqrt(n);
for(int i = 5; i <= tmp; i += 6)
if(n % i == 0 || n % (i+2) == 0)
return 0;
return 1;
}
int main()
{
int t;
scanf("%d",&t);
//得到回文数
int a=t;
int b;
while(a/10!=0){
a/=10;
b=a%10;
t=t*10+b;
}
if( prime(t) ) printf("isprime");
else printf("noprime");
return 0;
}