绝对素数这个东西改如何弄

问题描述】所谓“绝对素数”是指具有如下性质的素数:一个素数,当它的各位数字逆序排列,形成的整数仍为素数,这样的数称为绝对素数。例如:11,79,389是素数,其各位数字对换位置后分别为11,97,983仍为素数,因此这三个素数均为绝对素数。编写函数int absolute(int x),判断一个整数是否为绝对素数,如果x是绝对素数则返回1,否则返回0。编写程序接收控制台输入的两个整数a,b。调用absolute函数输出所有a到b之间(包括a和b)的绝对素数
【输入形式】控制台输入两个整数a和b,以空格分隔。
【输出形式】输出有若干行,每行有一个a和b之间的绝对整数。输出各行上的数字不重复,且从小至大依次按序输出。
【样例输入】80 120
【样例输出】
97
101
107
113
【样例说明】输入整数a=80,b=120,要求输出所有[80, 120]之间的绝对素数。有97,101,107和113,按升序分行输出。
【评分标准】该题要求输出若干行整数。如果你的程序计算的结果正确,则该测试点得满分,否则该测试点得0分。

写一个函数将整数逆序就行了啊

#include <stdio.h>

int isprime(int n)
{
    if(n==1)
        return 0;
    for(int i=2;i*i<=n;i++)
        if(n%i==0)
            return 0;
    return 1;
}

int rev(int n)
{
    int m = 0;
    while(n>0)
    {
        m = m*10+n%10;
        n=n/10;
    }
    return m;
}

int absolute(int n)
{
    if(isprime(n) == 0)
        return 0;
    int m = rev(n);
    return isprime(m);
}

 
int main()
{
    int m,n,i;
    scanf("%d%d",&m,&n);
    for(int i=m;i<=n;i++)
    {
        if(absolute(i) == 1)
            printf("%d\n",i);
    }
    return 0;
}

该回答引用ChatGPT

首先定义了两个函数isPrime和isAbsolutePrime,分别用于判断一个数是否为素数和绝对素数。其中isPrime函数遍历2到$\sqrt{x}$之间的数,如果能被整除,则不是素数。isAbsolutePrime函数则是先判断$x$是否为素数,再将$x$的各位数字逆序排列,判断逆序后的数是否为素数。

在main函数中,先输入$a$和$b$,然后遍历[a, b]之间的数,调用isAbsolutePrime函数判断是否为绝对素数,如果是,则输出该数。

#include <iostream>
#include <cmath>
using namespace std;

// 判断一个数是否为素数
bool isPrime(int x)
{
    if (x <= 1)
        return false;

    int sqr = sqrt(x);
    for (int i = 2; i <= sqr; i++) {
        if (x % i == 0)
            return false;
    }
    return true;
}

// 判断一个数是否为绝对素数
bool isAbsolutePrime(int x)
{
    // 先判断x是否为素数
    if (!isPrime(x))
        return false;

    // 将x的各位数字逆序排列
    int reverseNum = 0;
    while (x > 0) {
        reverseNum = reverseNum * 10 + x % 10;
        x /= 10;
    }

    // 判断逆序后的数是否为素数
    return isPrime(reverseNum);
}

int main()
{
    int a, b;
    cin >> a >> b;

    // 遍历[a, b]之间的数,判断是否为绝对素数
    for (int i = a; i <= b; i++) {
        if (isAbsolutePrime(i)) {
            cout << i << endl;
        }
    }

    return 0;
}


1.筛选法求原素数
2.整数拆分+重组调换顺序(stringstream 也可以 当字符串转换)
3.用筛选结果再求一遍
4.完成
p.s.千万不要用普通单个求素数方法