#include <stdio.h>
#include <string.h>
void sort(char s[][15],int n) //字符串排序
{
char t[15];
int i,j;
for(i=0;i<n-1;i++)
for(j=0;j<n-1-i;j++)
if(strcmp(s[j],s[j+1])>0)
{
strcpy(t,s[j]);
strcpy(s[j],s[j+1]);
strcpy(s[j+1],t);
}
}
void itoa(int n,char s[]) //把数字转化为字符串
{
int i,j;
char t;
for(i=0;n;i++)
{
s[i]=n%10+'0';
n/=10;
}
s[i]='\0';
for(i=0,j=strlen(s)-1;i<j;i++,j--)
{
t=s[i];
s[i]=s[j];
s[j]=t;
}
}
main()
{
int a[10]={1},i,j=0,t,sum; //a数组把1~9的阶乘存储起来
char s[10][15]; //假设最多有10个数
for(i=1;i<=9;i++)
a[i]=a[i-1]*i;
for(i=1;i<=1000000;i++)
{
sum=0;
for(t=i;t;t/=10)
sum+=a[t%10];
if(i==sum) //如果成立把这些数存储起来,
itoa(i,s[j++]);
}
sort(s,j); //然后排序输出
for(i=0;i<j;i++)
printf("%s ",s[i]);
}
一个正整数如果等于组成它的各位数字的阶乘之和,该整数称为阶乘和数。 例如,145=1!+4!+5!,则145是一个三位阶详细和数。 请问:共有多少个阶乘和数?
最新推荐文章于 2022-04-23 14:49:40 发布