qq_36519547 2016-11-24 00:43 采纳率: 100%
浏览 954

C语言问题求解答!!!!

绝对素数是指本身是素数,其逆序数也是素数的数。例如:10321与12301是绝对素数。

编程实现:键盘输入一个整数n,输出小于n的所有绝对素数。

要求:编写函数int isprime(int x)实现测试参数x是否为素数;编写函数int convert(int x),返回参数x的逆序数。main中完成输入输出与函数调用。

编写十进制数到二进制、八进制、十六进制间的转换程序。要求:键盘输入一个十进制的数,输出其对应的二进制、八进制、十六进制数。小数部分可以只输出8位以内

  • 写回答

2条回答 默认 最新

  • shen_wei 2016-11-24 08:36
    关注
     #include<stdio.h>
    #include <math.h>
    
    #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(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;
     }
    
    评论

报告相同问题?