int fact(int n)//求阶乘
{
if(n==0||n==1)
return 1;
else
return n*fact(n-1);
}
int main()
{
long long int sum,i,u;
int n,count=0;
for(i=1;i<=100000;i++)
{
sum=0;//记得每次循环都将sum置0
u=i;//这里要用一个新的数指向i,一开始直接判断i跑不出来,找原因后发现是在这里
while(u)
{
n=u%10;//求出数的每一位
u/=10;
sum+=fact(n);//调用外部阶乘函数
}
if(sum==i)
{
count++;
printf("%lld ",i);
}
}
printf("\n");
printf("count=%d",count);
}
例如,145=1!+4!+5!,则145是一个三位阶乘和数。请问:共有多少个阶乘和数?(不会超过十万)。
我这里的输出是按照大小输出,原题目是输出“1 145 2 40585”,想到的思路是将数据进行存储,使用字符判断排序,但是还写不出,所以先写了这道题的简单解法。