题目描述
小王对既是素数又是回文的数特别感兴趣。比如说151既是素数又是个回文。现在小王想要你帮助他找出某个范围内的素数回文数,请你写个程序找出 a 跟b 之间满足条件的数。(5 <= a < b <= 9999999);
输入
输入a和b(5 <= a < b <= 9999999)
输出
按从小到大输出a,b之间所有满足条件的素数回文数
样例输入 复制
5 500
样例输出 复制
5
7
11
101
131
151
181
191
313
353
373
383
写两个函数,一个用来判断素数,一个用来判断回文,挺简单的就是,注意判断回文要用到sprintf这个函数,见下:
#include<bits/stdc++.h>
using namespace std;
int isprime(long long a)
{
int temp=1;
if(a==1)
return 0;
else
for(long long i=2;i<=sqrt(a);i++)
{
if(a%i==0)
{
temp=0;
break;
}
}
return temp;
}
int ishuiwen(long long a)
{
char s[10];
sprintf(s,"%ld",a);
int n=strlen(s);
int temp=1;
for(int i=0;i<n;i++)
{
if(s[i]!=s[n-1-i])
temp=0;
}
return temp;
}
int main()
{
long long a,b;
cin>>a>>b;
for(long long i=a;i<=b;i++)
{
if(ishuiwen(i)&&isprime(i))
cout<<i<<endl;
}
}