package java_001;import java.util.Arrays;/*** Thinking in Java*吸血鬼数字是指位数为偶数的数字,可由一对数字相乘而得到,*这对数字各包含乘积的一半位数的数字,*其中从最初数字选取的数字可以任意排序*以两个0结尾的数字是不允许的。*四位数吸血鬼数字示例:1260=21*60,1827=21*87,2187=27*81……*编写程序列出所有的4位的吸血鬼数**列出结果:一共7个:1260=21*60,1395=15*93,*1435=41*35,1530=51*30,1827=87*21,*2187=27*81,6880=86*80*/public class Xi {public static int[] toIntArray(int num1, int num2) {//两个二位数转数组int[] a = new int[4];a[0] = num1 / 10;a[1] = num1 % 10;a[2] = num2 / 10;a[3] = num2 % 10;return a;}public static int[] toIntArray(int num) {//四位数转数组int[] a = new int[4];a[3] = num % 10;a[2] = num % 100 / 10;a[1] = num % 1000 / 100;a[0] = num / 1000;return a;}public static void testToIntArray(int i,int j,int xi){int[] a = toIntArray(i, j);int[] b = toIntArray(xi);System.out.println("1:" + Arrays.toString(a));System.out.println("2:" + Arrays.toString(b));}public static boolean notInList(int key,int[] list,int sum){for (int k = 0; k < sum; k++) {if (list[k] == key) {return false;}}return true;}public static void main(String[] args) {///*int[] list=new int[10];int sum=0;for(int i=11;i<100;i++){for(int j=10;j<100;j++){int xi=i*j;if(xi<999||xi>10000)continue;int[] a=toIntArray(i,j);int[] b=toIntArray(xi); Arrays.sort(a);Arrays.sort(b); //将a,b数组元素排序if(Arrays.equals(a, b) && notInList(xi, list, sum)){//判断a,b数组是否相等,并且吸血鬼数不在list内(去重)list[sum]=xi;sum++; System.out.print(xi+",");}}}System.out.println("\nsum="+sum);//*/}
}