c语言大一 不会 望了解

输出0~200000范围内具有如下特性的数:组成该数的各位数字阶乘之和等于该数自身。例如,145=1!+4!+5!(c语言)

#include <stdio.h>
int main()
{long n,m,sum,p;
int i,j=0,k;
for(n=1;n<200000;n++)
{m=n;
sum=0;
while(m)
{k=m%10;
p=1;
for(i=2;i<=k;i++)
p*=i;
sum+=p;
m/=10;
}
if(sum==n)
{ printf("%ld\t",n);
if(++j%2==0)
printf("\n");
}
}
return 0;
}

为了程序看起来比较整洁,先定义一个函数用来计算阶乘,然后在主函数中对数进行分割,然后调用函数就行了