c语言编程:输出m~n之间的回文素数

到底哪里有问题?#include<stdio.h>intmain(){intm,n,c,b,k,p,q,r,leap;scanf("%d%d",&m,&n);r=0;le... 到底哪里有问题?
#include<stdio.h>
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;q<p;q++)
if(p%q==0)
break;
if(q==p)
{
leap=1;
r=r+1;
}
else
leap=0;
}
else
leap=0;
}
if(leap=1)
printf("%d",p);
while(r%5==0)
printf("\n");
return 0;
}
展开
 我来答
风若远去何人留
2013-11-19 · 知道合伙人互联网行家
风若远去何人留
知道合伙人互联网行家
采纳数:20412 获赞数:450126
专业C/C++软件开发

向TA提问 私信TA
展开全部

程序开始部分没什么问题,结尾一个接一个

是自己想乱了还是着急了?

如果刚学C 最好还是先列个流程 然后再写,不容易出错

改正后的程序如下,原因见注释

#include<stdio.h>
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;q<p;q++)
    if(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;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式