绝对素数问题
题目:
将自然数区间10-1000中所有绝对素数挑选出来,每行打印输出5个。绝对素数是:一个数和其反序数都是素数,例如13和31都是素数,所以13是绝对素数。
代码:
#include<stdio.h>
int main()
//绝对素数是:一个数和其反序数都是素数,例如13和31都是素数,所以13是绝对素数。
{
int n=10,r,i,m=0,j=1,k;
while(n<=1000)
{
k=n;
m=0;
r=0;
do
{ r=r*10+k%10;
k/=10;
}while(k!=0);//求反序数
for(i=2;i<=n-1;i++)
{ if(n%i==0)
{ m=1;
break;
}
}//判断n是否为素数
for(i=2;i<=r-1;i++)
{ if(r%i==0)
{ m=1;
break;
}
}//判断n是否为素数
if(m==0)
{ printf("%d\t",n);
if(j%5==0) printf("\n");
j++;
}//打印以及换行
n++;
}
}
代码变量分析:
n=10,主要循环对象;
r,计算反序数;
i,计数器;
m=0,判断是否为素数,m=0为素数,m=1,不为素数;
j=1,打印个数计数,方便换行;
k,复制保存n的值,便于求反序数。