////// 求解阶乘和数
#include<stdio.h>
#include<math.h>
int GCD(int a[],int b);
int Fabric(int a[],int b);
int main()
{
int M,N,i;
int a[6];
scanf("%d",&M);
for(i=1;i<M;i++){
N = GCD(a,i);
// printf("Great divisor is %d\n",GCD(a,i));
// printf("阶乘和is %d\n",Fabric(a,N));
if(i == Fabric(a,N)){
printf("阶乘和数为 %d\n",i);
}
}
}
////整数位数分离
int GCD(int a[],int b)
{
int bitwidth = 0;
if(b == 0){
return 0;
}
while(b>0){
a[bitwidth++] = b%10;
b = b/10;
}
return bitwidth;
}
////整数位数求其阶乘和
int Fabric(int a[],int Bitcnt)
{
int i = 0;
int j = 0;
int temp = 1;
int sum = 0;
if(Bitcnt == 0){
return 0;
}
for(i=0;i<Bitcnt;i++){
temp = j = 1;
for(j=1;j<=a[i];j++){
temp *= j;
}
sum += temp;
// printf("sum is %d\n",sum);
}
return sum;
}
记录C语言自学!