import java.util.Arrays;
/**
* 题目:编写程序,找出四位数的所有吸血鬼数字
* 吸血鬼数字:吸血鬼数字是指位数为偶数的数字,可由一对数字相乘而得到,这对数字各包含乘积的一半位数的数字,以两个0结尾的数字是不允许的
* 下列数字都是吸血鬼数字:
* 1206 = 21*60
* 1827 = 21*87
* 2187 = 27*81
*
*/
public class SearchVampireNumber {
public static void main(String[] args) {
searchVampireNumber();
}
/*
* 找出四位数的所有吸血鬼数字
*/
public static void searchVampireNumber() {
String[] fourNum = null;//用于保存四位数
String[] twoNum = null;//用于保存两个两位数
int sum = 0;//吸血鬼数字的总个数
for(int i=10;i<100;i++) {//遍历所有的两位数乘以两位数
for(int j=i;j<100;j++) {
int product = i*j;
if(product<1000 || product>9999 || String.valueOf(product).endsWith("00")) {//不为四位数或者以00结尾不满足题目要求
continue;
}
fourNum = String.valueOf(product).split("");//将四位数转换为字符串,再分割为字符串数组
twoNum = (String.valueOf(i) + String.valueOf(j)).split("");//将两个两位数转换为字符串,拼接为一个字符串,再分割
Arrays.sort(fourNum);//将数组排序
Arrays.sort(twoNum);
if(Arrays.equals(fourNum,twoNum)) {//比较两个数组是否相同
sum++;//数组相同,满足题意,总个数加一
System.out.println(product+"="+i+"*"+j);
}
}
}
System.out.println("总共有:"+sum+"个四位数的吸血鬼数字");
}
}
运行结果:
1395=15*93
1260=21*60
1827=21*87
2187=27*81
1530=30*51
1435=35*41
6880=80*86
总共有:7个四位数的吸血鬼数字