c++找出a b区域之间所有回文素数并输出

编译错误,求大神帮看
#include
#include
using namespace std;
int main() {
int a,b,n;
cin>>a>>b;
for(n=a;n<=b;n++)
{
bool p(long m)
{
m=n;
int s=0;
while(m>0)
{
s=s*10+m%10;
m=m/10;
}
if(s==n) return 1;
else return 0;
}
if (p==1)
{
for (int k=2;k<n;k++)
if(n%k==0)break;
if(k==n-1) cout<<n<<endl;
}

}

return 0;
}

那个头文件是有的,只是复制过来没了

C 函数内部,不能定义函数
C++也只是几种特例,才可以

1)函数内部的类型(struct,class)定义内部定义函数
2)C++11 lamda 表达式

那个判断是否是回文数的函数写在主函数外面然后调用就可以了吧,个人建议,如果a b不是太大的话,建议素数标记打表,然后判断是不是素数,如果是再调用判断是否是回文数的函数


#include <stdio.h>
#include <math.h>
#define lt long long
bool Tnop(lt NUM){
    int N[10], i = 0, j, UsdNt;
    for(NUM = NUM; NUM >= 1; N[i] = NUM % 10, NUM /= 10, i++)
        UsdNt = 0;
    for (j=0; j < i; j++)
        if (N[j] != N[i - j - 1]){
            return false;
            break;
        }
    return true;
}
bool Pn(lt NUM){
    bool Pn;
    for(short i = 2; i <= sqrt(NUM); i++)
    {
        if(NUM % i == 0){
               Pn = false;
            break;
        }
        else
            Pn = true;
    }
    return Pn;
}
bool TnopPn(lt NUM){
    if(Pn(NUM) and Tnop(NUM))
        return true;
    else
        return false;
}
int main()
{
    long long Min, Max;
    scanf("%d%d", &Min, &Max);
    for(long long i = Min; i <= Max; i++)
    {
        if(TnopPn(i))
            printf("%d\n", i);
    }
    return 0;
}
 
#include <stdio.h>
#include <math.h>
#define lt long long
bool Tnop(lt NUM){
    int N[10], i = 0, j, UsdNt;
    for(NUM = NUM; NUM >= 1; N[i] = NUM % 10, NUM /= 10, i++)
        UsdNt = 0;
    for (j=0; j < i; j++)
        if (N[j] != N[i - j - 1]){
            return false;
            break;
        }
    return true;
}
bool Pn(lt NUM){
    bool Pn;
    for(short i = 2; i <= sqrt(NUM); i++)
    {
        if(NUM % i == 0){
               Pn = false;
            break;
        }
        else
            Pn = true;
    }
    return Pn;
}
bool TnopPn(lt NUM){
    if(Pn(NUM) and Tnop(NUM))
        return true;
    else
        return false;
}
int main()
{
    long long Min, Max;
    scanf("%d%d", &Min, &Max);
    for(long long i = Min; i <= Max; i++)
    {
        if(TnopPn(i))
            printf("%d\n", i);
    }
    return 0;
}