假设有这样一个三位数m,其百位,十位和个位数字分别是a,b,c,若是m = a! + b! + c!,则这个三位数就称为三位阶乘和数(约定0! = 1)web
#include<stdio.h> int fac(int n) //计算阶乘 { int i = 0, p = 1; if(n == 0 || n == 1) { return 1; } for(i = 2; i <= n; i++) { p = p*i; } return p; } long fact(int n) //计算三位数各个数的阶乘之和 { int a = 0, b = 0, c = 0, sum = 0; a = n/100; b = (n/10)%10; c = n%10; a = fac(a); b = fac(b); c = fac(c); sum = a + b + c; return sum; } int main() //判断这个数和阶乘之和是否相等,并输出 { int n = 0, sum = 0; for(n = 100; n <= 999; n++) { sum = fact(n); if(n == sum) { printf(" n = %d\n",n); } } return 0; }
三位阶乘数为145svg