可逆素数是将一个素数的各个位置的数字顺序倒置过来构成的反序数仍是素数。本例子是求1000到10000内的可逆素数。
源代码如下:
#include<stdio.h>
#include<math.h>
int ss(int i)
{
int j;
if(i<=1)
return 0;
if(i==2)
return 1;
for(j=2;j<i;j++)
{
if(i%j==0)
return 0;
else if(i!=j+1)
continue;
else
return 1;
}
}
void main()
{
int i,n=0,n1,n2,n3,n4;
for(i=1000;i<10000;i++)
if(ss(i)==1)
{
n4=i%10;
n3=(i%100)/10;
n2=(i/100)%10;
n1=i/1000;
if(ss(1000*n4+100*n3+10*n2+n1)==1&&1000*n4+100*n3+10*n2+n1>i)
{
printf("%2d,",i);
n++;
if(n%10==0)
printf("\n");
}
}
}
思路:重点是在如何求一个可逆素数,方法很多,本例是采用了将四位数逐个拆分,对该数进行%或者是/运算。在重新组合该数之后,在进行对其判断其是否是素数。还要注意的是,为了输出的数避免重复,还要添加一个条件就是,重新组合的数是否大于原来的数。