题目描述:
一个正整数如果等于组成它的各位数字的阶乘之和,该整数称为阶乘和数。
例如,145=1!+4!+5!,则145是一个三位阶乘和数。
请问:共有多少个阶乘和数?(不会超过十万)
代码:
package lanqiao;
import java.math.BigInteger;
import java.util.*;
public class Main {
public static void main(String[] args) {
int n=0;//用来计入有多少个数
Set<String> set = new TreeSet<String>();
for(int i=1;i<=100000;i++) {
int sum=1,sum1=0;
String s = String.valueOf(i);//将数转换成字符串
char c[] = s.toCharArray();
int a[]=new int[c.length];
//数的每一项存入数组,求阶乘
for(int j=0;j<c.length;j++) {
a[j]=c[j]-'0';
for(int k=1;k<=a[j];k++) {
sum*=k;
}
sum1+=sum;
sum=1;
}
if(sum1==i) {
set.add(Integer.toString(i));
n++;
}
}
//字典排序
String[] strArr = (String[]) set.toArray(new String[set.size()]);
for(int i=0;i<n;i++) {
System.out.print(strArr[i]+" ");
}
}
}