找出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 ………… 程序中包含两个函数,分别用于实现判断素数和计算阶乘。

以下是用C语言实现的程序,包含两个函数,分别用于判断素数和计算阶乘,并实现了打印所有符合条件的数的功能:

#include <stdio.h>

int isPrime(int num) {
    if (num <= 1) {
        return 0;
    }
    for (int i = 2; i <= num / 2; i++) {
        if (num % i == 0) {
            return 0;
        }
    }
    return 1;
}

int factorial(int num) {
    if (num == 0) {
        return 1;
    }
    int result = 1;
    for (int i = 1; i <= num; i++) {
        result *= i;
    }
    return result;
}

int main() {
    for (int num = 800; num <= 1200; num++) {
        int temp = num;
        int sum = 0;
        while (temp > 0) {
            sum += factorial(temp % 10);
            temp /= 10;
        }
        if (isPrime(sum)) {
            printf("%d:", num);
            temp = num;
            while (temp > 0) {
                int digit = temp % 10;
                printf("%d!", digit);
                if (temp >= 10) {
                    printf("+");
                }
                temp /= 10;
            }
            printf("=%d\n", sum);
        }
    }
    return 0;
}