1. 构造回文数,每次乘10然后加新尾数,新尾数为将截断末位数(即除10)之后的原数依次取末尾数(即对10取余)。
2. 检验素数,注意时间复杂度
#include <stdio.h>
#include <math.h>
int isprime(long long n){ //检验素数的函数
int i;
if(n < 2)
return 0; //1不是素数
for(i = 2; i<sqrt(n); i++) //用sqrt(n),而不直接用n,更快
if(n % i == 0)
return 0;
return 1;
}
long long creat(long long t){ //用long long, 而不用int
long long a = t;
while(a > 9){
a = a / 10; //用于下一步的截取末位数
t = t * 10 + a % 10; //乘10加新尾数
}
return t;
}
int main(){
long long t = 0;
scanf("%ld", &t);
t = creat(t);
if(isprime(t))
printf("prime\n");
else
printf("noprime\n");
return 0;
}

京公网安备 11010502036488号