洛谷B2136 素数回文数的个数

问题遇到的现象和发生背景

img

img

B2136 素数回文数的个数,输出结果是0,不知道是哪里错了

用代码块功能插入代码,请勿粘贴截图
#include 
#include 
int f(int n)
{
    for(int i=2;i<=n;i++)
    {
        if(n%i==0)
        return 0;
    }
    return 1;
}
int m(int n)
{
    int i=0,j=0,a[10000],b[10000];
    while(n!=0)
    {
        a[i]=n%10;
        n/=10;
        i++;
    }
    for(int k=i;k>=0;k--)
    {
        b[j]=a[k];
        j++;
    }
    for(int l=0;l<=i;l++)
    {
        if(a[l]!=b[l])
        return 0;
    }
    return 1;
}
int main ()
{
    int n,sum=0;
    scanf("%d",&n);
    for(int i=2;i<=n;i++)
    {
        if(f(i)==1&&m(i)==1)
            sum++;
    }
    printf("%d",sum);
    return 0;
}

修改如下,供参考:

#include <stdio.h>
//#include
int f(int n)
{
    for(int i=2;i<n;i++) //(int i=2;i<=n;i++)
    {
        if(n%i==0)
            return 0;
    }
    return 1;
}
int m(int n)
{
    int i=0,j=0,a[10000],b[10000];
    while(n!=0)
    {
        a[i]=n%10;
        n/=10;
        i++;
    }
    for(int k=i-1;k>=0;k--) //for(int k=i;k>=0;k--)
    {
        b[j]=a[k];
        j++;
    }
    for(int l=0;l<i;l++) //(int l=0;l<=i;l++)
    {
        if(a[l]!=b[l])
            return 0;
    }
    return 1;
}
int main ()
{
    int n,sum=0;
    scanf("%d",&n);
    for(int i=11;i<=n;i++) //(int i=2;i<=n;i++)
    {
        if(f(i)==1 && m(i)==1)
            sum++;
    }
    printf("%d",sum);
    return 0;
}


int f(int n)
{
    for(int i=2;i<=n;i++)   //这里i不能等于n,等于n必定能整除就只能返回一个0
    {
        if(n%i==0)
        return 0;
    }
    return 1;
}