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