新人C语言问题求帮助,请不要复制别人的

绝对素数是指本身是素数,其逆序数也是素数的数。例如:10321与12301是绝对素数。
编程实现:键盘输入一个整数n,输出小于n的所有绝对素数。
要求:编写函数int isprime(int x)实现测试参数x是否为素数;编写函数int convert(int x),返回参数x的逆序数。main中完成输入输出与函数调用。

c

1个回答

 #define SWAP(a, b, t) t = (a), (a) = (b), (b) = (t);  // 交换两个数的位置

int foo1(int m);          // 计算素数  , 是返回1, 否返回0
int foo2(int m);          // 计算反序数, 是返回1, 否返回0

int main()
{
    int m, n, x;
    int t;

    scanf("%d%d", &m, &n);
    if (m > n)             // 如果第一个数大于第二个数,就交换位置 没有做<1000的判断, 需要可以加上去.
        SWAP (m, n, t);

    for (x = m; x <= n; x++)
        if (foo1(x))       // 1. 计算x是否是素数
            if (foo2(x))   // 2. 计算反序数是否是素数
                printf("%d\n", x);
    return 0;
}

int foo1(int m)
{
    int i;
    for (i = 2; i <= sqrt((float)m); i++)
        if (m % i == 0)
            return 0;
    return 1;
}

int foo2(int m)
{
    int x = 0, t = 0;

    while(m) {         // 求反序数
        x = m % 10;
        t = t * 10 + x;
        m = m / 10;
    }
    if (foo1(t))      // 计算反序数是否是素数.
        return 1;
    return 0;
}
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!