import java.util.Collections;
import java.util.List;
public class Demo5 {
/**
* 獲取階乘的方法
*/
public static int factorial(int i) {
if (i == 1) {
return 1;
}
return factorial(i - 1) * i;
}
/**
* 獲取階乘和
*
* @return 返回包含階乘和的集合
*/
public static List<String> factorialSum() {
List<String> info = new ArrayList<String>();// 準備壹個集合
for (int i = 1; i <= 100000000; i++) {
String temp = i + "";// 將整形轉換為字符串
int len = temp.length();// 獲取長度
int sum1 = 0;
int sum2 = 0;
for (int j = 0; j < len; j++) {// 對數據進行拆分求階乘和,如:123=1!+2!+3!
sum1 = Integer.parseInt(temp.substring(j, j + 1));
if (sum1 != 0) {
sum2 += factorial(sum1);
}
}
if (i == sum2) {// 對階乘和與當前的數字進行比較
info.add(i + "");// 如果符合條件就加入到集合中
}
}
Collections.sort(info);// 對集合進行字典排序
return info;
}
public static void main(String[] args) {
System.out.println(factorialSum());
}
}