用C语言编写程序输出所有各位数字阶乘之和等于其自身的三位数。 如:145=1!+4!+5!.
时间: 2023-10-06 18:04:42 浏览: 139
以下是用C语言编写的程序,可以输出满足条件的三位数:
```c
#include <stdio.h>
int main() {
int i, j, k, n, sum, fact;
for (i = 1; i <= 9; i++) {
for (j = 0; j <= 9; j++) {
for (k = 0; k <= 9; k++) {
n = i * 100 + j * 10 + k;
sum = 0;
for (int m = n; m > 0; m /= 10) {
fact = 1;
for (int p = 1; p <= m % 10; p++) {
fact *= p;
}
sum += fact;
}
if (sum == n) {
printf("%d\n", n);
}
}
}
}
return 0;
}
```
程序的思路是先枚举三位数的每一位(分别用变量i、j、k表示),然后计算出这三位数n,并计算n的各位数字的阶乘之和sum。具体地,我们用一个循环从n的最低位开始,依次计算每一位数的阶乘,并将它们相加得到sum。如果sum等于n,则输出n即可。
需要注意的是,这里我们采用了两层循环来枚举i、j、k,这样可以避免重复计算。另外,为了计算阶乘,我们内部还嵌套了两个循环,分别计算每一位数的阶乘。虽然这样会增加程序的复杂度,但是由于三位数的范围比较小,所以程序的运行速度仍然很快。
阅读全文