为什么得不到回文质数

#include<stdio.h>
#include<math.h>
int pdhw(int n)
{
    int s[10];
    int i = 0;
    int j = 0;
    int c= 0;
    int sum = 0;
    int temp=n;
    while(n){
        s[i]=n%10;
        i++;
        n/=10;
    }
    for(j=0;j<i;j++){
        sum += s[c]*pow(10,j);
        c++;
    }
//    printf("%d\n",sum);
    if(sum==temp){
        return 1;
    }
    else{
        return 0;
    }
}
int main(){
    int n,m;
    scanf("%d %d",&n,&m);
    int i = 0;
    int j = 0;
    for(i = n;i<=m;i++){
        for(j = 2;j<i;j++){
            if(i%j==0){
                break;
            }
            else if(i==j){
                printf("%d",i);
                if(pdhw(i)==1){
                    printf("%d",i);
                }    
            }
        }
    }
}
 

为什么得不到回文质数

代码修改如下

#include <stdio.h>
#include <math.h>
int pdhw(int n)
{
    int s[10];
    int tmp = n;  //记录n的值
    int i = 0;
    int j = 0;
    int c= 0;
    int sum = 0;
    while(n){
        s[i]=n%10;
        i++;
        n/=10;
    }
    for(j=0;j<i;j++){
        sum += s[c]*pow(10.0,i-j-1);
        c++;
    }
    if(sum==tmp){  //修改2,跟tmp进行比较
        return 1;
    }
    else{
        return 0;
    }
}

int main()
{
    int n,m;
    scanf("%d %d",&n,&m);
    int i=0;
    int j = 0;
    for (i=n;i<=m;i++)
    {
        for (j=2;j<i;j++)
        {
            if(i%j ==0)
                break;
        }
        if(i == j && pdhw(i))
        {
            printf("%d ",i);
            //if(pdhw(i)==1)
            //    printf("%d ",i);
        }
    }
    return 0;
}