找出正整数 M 和 N 之间(N 不小于 M)的所有真素数。
真素数的定义:如果一个正整数 P 为素数,且其反序也为素数,那么 P 就为真素数。
例如,11,13 均为真素数,因为11的反序还是为11,13 的反序为 31 也为素数。
输入
输入两个数 M 和 N,空格间隔,1 <= M <= N <= 100000。
输出
按从小到大输出 M 和 N 之间(包括 M 和 N )的真素数,中间用空格间隔,最后一个数后面也要有空格。如果之间没有真素数,则输出 no。
定义一个判断素数函数,再定义一个求反序函数。然后M到N逐个判断就好了
#include <stdio.h>
int isprime(int n)
{
if(n<=1)
return 0;
for(int i=2;i*i<=n;i++)
if(n%i==0)
return 0;
return 1;
}
int rev(int n)
{
int m=0;
whilie(n>0)
{
m=m*10+n%10;
n = n/10;
}
return m;
}
int main()
{
int m,n,i,count=0;
scanf("%d%d",&m,&n);
for(i=m;i<=n;i++)
if(isprime(i) && isprime(rev(i))
{
printf("% ",i);
count++;
}
if(count ==0)
printf("no"):
return 0;
}