\题目描述
小王对既是素数又是回文的数特别感兴趣。比如说151既是素数又是个回文。现在小王想要你帮助他找出某个范围内的素数回文数,请你写个程序找出 a 跟b 之间满足条件的数。(5 <= a < b <= 100,000,000);
输入
输入a和b(5 <= a < b <= 100,000,000)
输出
按从小到大输出a,b之间所有满足条件的素数回文数
样例输入
5 500
样例输出
5 7 11 101 131 151 181 191 313 353 373 383
解题思路
一:首先,数字比较大,用long long int 定义,接着判断是否为素数
二:接着用数组,把每个数的位数上的数字放在数组中,判断是否为回文数。
代码
#include<stdio.h>
int main()
{
long long int a,b,i,j=0,k,t,f,c,d[10000];
scanf("%lld %lld",&a,&b);
for(i=a;i<=b;i++)
{
int A=1;
f=0;
c=i;
while(c)
{
d[j++]=c%10;//将数字装在数组中,并判断数字的位数。
c=c/10;
}
t=j-1;
for(k=0;k<j;k++)
{
if(d[k]==d[t--])
{
f++;//判断是否为回文数
}
}
for(k=2;k<i;k++)
{
if(i%k==0)//判断是否为素数
{
A=k;
}
}
if(f==j&&A==1)//判断是否符合条件
{
printf("%d\n",i);
}
j=0;
}
return 0;
}