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; }