import java.io.File;
import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.Collections;
public class Test_03 {
public static void main(String[] args) {
//从1000开始循环到9998,
abc:for(int x=1000;x<10000;x+=2){
//分别获取4位数上的数字
int a=x/1000;//千位
int b=(x/100)%10;//百位
int c=(x%100)/10;//十位
int d=x%10;//个位
/* 在循环中将其加入集合,用循环遍历所有取出的顺序,按照顺序前两个组成第一个数,后两个组成第二个数
如果两个数相乘等于x,那么x满足条件,计算下一个x */
for(int i=0;i<4;i++){ //在四个数中取出第一个数,循环四种可能
ArrayList<Integer> arr1=new ArrayList<Integer>();
Collections.addAll(arr1, a,b,c,d);
int e=arr1.get(i);
arr1.remove(i);
for(int j=0;j<3;j++){ //在剩下的三个数中取出第二个,依然循环
ArrayList<Integer> arr2=new ArrayList<Integer>();
Collections.addAll(arr2, arr1.get(0),arr1.get(1),arr1.get(2));
int f=arr2.get(j);
arr2.remove(j);
for(int m=0;m<2;m++){ //第三个和第四个一起取出,用循环可以循环出两种顺序
ArrayList<Integer> arr3=new ArrayList<Integer>();
Collections.addAll(arr3, arr2.get(0),arr2.get(1));
int g=arr3.get(m);
int h=arr3.get(1-m);
if(x==(e*10+f)*(g*10+h)){ //判断是否有一种可能让x满足吸血鬼数
System.out.print(x+"= ");
System.out.println((e*10+f)+"*"+(g*10+h));
continue abc; //一旦满足计算下一个数,不再循环其他的排列方式
}
}
}
}
}
}
} |