黑洞数又称陷阱数,是具有奇特转换特性的整数。任何一个数字不全相同整数,经有限“重排求差”操作,总会得某一个或一些数,这些数即为黑洞数。“重排求差”操作即把组成该数的数字重排后得到的最大数减去重排后得到的最小数。
代码:
public static void main(String[] args) { int num = 6451; int max, min, result; while (true) { System.out.println(num); char[] arr = ("" + num).toCharArray(); java.util.Arrays.sort(arr); // 对这些数字从小到大排序 max = 0; min = 0; // 求最大数 for (int i = arr.length - 1; i >= 0; --i) { max = max * 10 + (arr[i] - '0'); } // 最小数 for (int i = 0; i < arr.length; ++i) { min = min * 10 + (arr[i] - '0'); } result = max - min; // 最大数和最小数之差如果和原数相同,则说明找到了,跳出循环 if (result == num) { System.out.println("找打了黑洞数:" + num); break; } num = result; } }
效果: