1. 题目
读题
数位之积(AC)
现给定任意正整数 n,请寻找并输出最小的正整数 m(m>9),使得 m 的各位(个位、十位、百位 … …)之乘积等于n,若不存在则输出 -1。
考查点
2. 解法
思路
思路:让n除以从9 - 2的,如果整除:n变为n / i递归,并且将i放入list集合中
代码逻辑
具体实现
public class MutliSum {
public static void main(String[] args) {
System.out.println(findMinSum(100));
System.out.println(findMinSum(36));
System.out.println(findMinSum(17));
}
public static int findMinSum(int n) {
List<Integer> list = new ArrayList<>();
//是否可以被9到2整除
boolean flag = true;
while (n != 1 && flag) {
for (int i = 9; i >= 2; i--) {
if (n % i == 0) {
list.add(i);
n = n / i;
break;
}
if (i == 2 && n % i != 0) {
flag = false;
}
}
}
if (list.size() == 0) {
return -1;
}
int sum = 0;
for (int i = list.size() - 1; i >= 0; i--) {
sum = sum * 10 + list.get(i);
}
return sum;
}
}