求帮忙看一下这个c语言程序的问题,是求某个范围内的回文素数的问题

题目是:输出m和n之间的回文素数,m和n从键盘读入(假定满足5<=m<=n<=100000),回文是指正向与反向的字符都一样,例如1、11、101、131等。我的代码是:... 题目是:输出m和n之间的回文素数,m和n从键盘读入(假定满足5<=m<=n<=100000),回文是指正向与反向的字符都一样,例如1、11、101、131等。

我的代码是:
#include<stdio.h>
int main()
{
int m,n,i,t,x,h,b=0,N,z;
int a[4];

printf("please input m, n(5<=m<=n<=100000): ");
scanf("%d%d",&m,&n);

if(m<n)
{t=m; m=n; n=t;}

printf("Result(%d-%d):\n",n,m);

for(i=n;i<=m;i++)
{
for(x=2;x<i;x++)
if(i%x==0)
break;

if(x==i)
{
z=i;
while(i)
{
i=i/10;
b++;
}

N=1;
for(h=b-1;h>=0;h--)
{
a[h]=z/N%10;
N=N*10;
}

if(b==4&&a[3]==a[0]&&a[1]==a[2])
printf("%d ",z);
if(b!=4&&a[b-1]==a[0])
printf("%d",z);
}
}
return 0;
}
展开
 我来答
1812573723
2015-11-23 · TA获得超过2355个赞
知道小有建树答主
回答量:943
采纳率:88%
帮助的人:884万
展开全部

如果只是改正错误的话,按照一下方式修改:

if(x==i)

{

    ...

}

改成

if(x==i)
{
    z=i;
    b=0;
    while(z)
    {
        a[b]=z%10;
        z=z/10;
        b++;
    }
    for (z=0;z<b;z++)
        if(a[z]!=a[b-1-z]) break;
    if(z==b)
        printf("%d ",i);
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式