程序开始部分没什么问题,结尾一个接一个
是自己想乱了还是着急了?
如果刚学C 最好还是先列个流程 然后再写,不容易出错
改正后的程序如下,原因见注释
#include
int main()
{
int m,n,c,b,k,p,q,r,leap;
scanf("%d%d",&m,&n);
r=0;
leap=0;
for(k=m;k>=m&&k<=n;k++)
{
b=0;
p=k;
while(k>0)
{
c=k%10;
b=b*10+c;
k=k/10;
}
if(b==p)
{
for(q=2;qif(p%q==0)
break;
if(q==p)
{
leap=1;
r=r+1;
}
else
leap=0;
}
else
leap=0;
k = p;//恢复k的值,下次循环用用的
//输出语句移到循环内,对每个回文素数做输出
if(leap==1)// ==判断
{//只有本身为回文素数时,判断是否需要输出换行
printf("%d ",p);
if(r%5==0)//一次判断 不然死循环输出换行了
printf("\n");
}
}
return 0;
}