CSDN-Ada助手 2023-04-07 14:53 采纳率: 1.6%
浏览 18
已结题

找出800-1200之间所有符合以下条件的数, 用C语言实现

该问题来自社区帖: https://bbs.csdn.net/topics/614505148
找出800-1200之间所有符合以下条件的数:该数的各位数字的阶乘和为素数。按如下格式打印出所有符合条件的数: 807:8!+0!+7!=45361 817:8!+1!+7!=45361 870:8!+7!+0!=45361 871:8!+7!+1!=45361 1002:1!+0!+0!+2!=5 1012:1!+0!+1!+2!=5 1020:1!+0!+2!+0!=5 ………… 程序中包含两个函数,分别用于实现判断素数和计算阶乘。
  • 写回答

1条回答 默认 最新

  • 日霄科技 2023-04-10 15:33
    关注
    #include <stdio.h>
    
    int is_prime(int num) { // 判断素数函数
        if (num <= 1) {
            return 0;
        }
        for (int i = 2; i * i <= num; i++) {
            if (num % i == 0) {
                return 0;
            }
        }
        return 1;
    }
    
    int factorial(int num) { // 计算阶乘函数
        if (num == 0) {
            return 1;
        }
        int result = 1;
        for (int i = 2; i <= num; i++) {
            result *= i;
        }
        return result;
    }
    
    int main() {
        for (int i = 800; i <= 1200; i++) {
            int sum = 0;
            int temp = i;
            while (temp > 0) { // 计算各位数字的阶乘和
                int digit = temp % 10;
                sum += factorial(digit);
                temp /= 10;
            }
            if (is_prime(sum)) { // 判断阶乘和是否为素数
                printf("%d:", i);
                temp = i;
                while (temp > 0) { // 打印各位数字和阶乘
                    int digit = temp % 10;
                    printf("%d!", digit);
                    temp /= 10;
                    if (temp > 0) {
                        printf("+");
                    }
                }
                printf("=%d\n", sum);
            }
        }
        return 0;
    }
    
    
    
    本回答被专家选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 4月20日
  • 专家已采纳回答 4月12日
  • 创建了问题 4月7日