回文素数,不知道为什么没有输出

  • img


    include<stdio.h>
    #include<math.h>
    /int main(){
    int m,n;
    scanf("%d%d",&m,&n);
    /
    int hw(int s) {
      int a,b,p,i=1;
      while(p==1&&s>0){
      b=s%10;
      int c=s;
      while(c>=10){
          c/=10;i++;
      }
      a=c;
      if(a==b) p=1; else{ p=0;break;}
      s-=a*pow(10.0,i*1.0-1);
      s/=10;
      i=1;    }return p;    }
      
      int su(int s){
          for(int i=2;i<sqrt(s);i++){
              if(s%i==0) return 0;
          }
          return 1;
      }
    
    int main(){
    int m,n;
    scanf("%d%d",&m,&n);
      for(int x=m;x<=n;x++){
          if(su(x)==1&&hw(x)==1){
              printf("%d",x);
          }
      }
      return 0;
      
    
    }

修改如下,供参考:

#include <stdio.h>
//#include <math.h>   修改
//int main(){         修改
//    int m,n;        修改
//    scanf("%d%d",&m,&n);修改
int hw(int s)
{
    int a = 0,b = s;//,p,i=1; 修改
    while (b)
    {
        a = a * 10 + b % 10;
        b /= 10;
    }
    return a == s;

#if 0                  //修改
    while(p==1&&s>0){
        b=s%10;
        int c=s;
        while(c>=10){
            c/=10;
            i++;
        }
        a=c;
        if(a==b) p=1;
        else{
            p=0;
            break;
        }
        s-=apow(10.0,i*1.0-1);
        s/=10;
        i=1;
    }
    return p;
#endif
}

int su(int s) //修改
{
    if (s < 4)     return s > 1;
    if (!(s & 1))  return 0;
    for(int i = 3; i * i <= s ;i++)
        if(s%i==0)    return 0;
    return 1;
}
int main()
{
    int m,n;
    scanf("%d%d",&m,&n);
    for(int x = m;x <= n; x++){
        if(su(x) && hw(x)) //(su(x)==1 && hw(x)==1) 修改
            printf("%d ",x);
    }
    return 0;
}

能用代码块格式化一下么,看着太乱了

代码有点乱

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^