有这样一些三位数,该三位数等于其每位数字的阶乘之和,即abc = a! + b! + c!。如(145=1!+4!+5!)
1 #include<stdio.h>
2 int main()
3 {
4 int num ; //定义这个未知数;
5 int i ;
6 int units,tens,hundreds; //分别定义这个三位数的个位、十位、百位;
7 for(num = 100 ; num < 1000 ; num ++) //因为是个三位数,所以从100循环至999停止
8 {
9 units = num%10;
10 tens = num/10%10;
11 hundreds = num/100; //每次循环的三位数都分别取出他的个、十、百位
12 for(i = units - 1 ; i > 0 ; i--)
13 {
14 units *= i; //算出个位的阶乘结果
15 }
16 for(i = tens -1 ; i > 0 ; i--)
17 {
18 tens *= i; //算出十位的阶乘结果
19 }
20 for(i = hundreds - 1 ; i > 0 ; i--)
21 {
22 hundreds *= i; //算出百位的阶乘结果
23 }
24 if(units + tens + hundreds == num)
25 {
26 printf("num = %d\n",num); //如果该数的个、十、百位的阶乘结果相加等于这个循环内的num则取该值
27 }
28 }
29 return 0;
30 }