代码:
#include<iostream>
#include<stdio.h>
#include<math.h>
#include<ctype.h>
#include<string.h>
using namespace std;
bool isprime(int num){
for(int i=2;i<=(int)sqrt((float)num);i++){
if(num%i==0){
return false;
}
}
return true;
}
bool huiwen(int num){
char s[255];
int change_num;
itoa(num,s,10);
strrev(s);
change_num=atoi(s);
if(change_num==num){
return true;
}
else {
return false;
}
}
int main()
{int a,b;
cin>>a>>b;
for(int i=a;i<b;i++){
if(isprime(i)&&huiwen(i)){
printf("%d\n",i);
}
}
return 0;
}
小结:
判断回文的时候没有采用数值的方式求解,而是先把数字转变为字符串,利用字符串的反转函数,判断是否与原来的数字一样。
itoa函数的用法:
char *itoa( int value, char *string,int radix);
第一个参数是即将要转换的数据;第二个参数是目标字符串的地址;第三个参数是转换后的进制数,可以是10进制、16进制等。
atoi函数的用法:
int atoi(const char *nptr);
可以将其结果赋值为一个整数。