《Java编程思想》中有这样一道题:
- 吸血鬼数字是指位数为偶数的数字,可以由一对数字相乘而得到。而这两位数字必须包含乘积的所有数字(顺序可以任意排序),能够被100整除的数是不允许的:
例如以下都是吸血鬼:
1260=21*60
1827=21*81
2187=27*81
那我们来分析一下题:
给了我们以下几个有用的条件:
- 由两位数相乘而得到并且包含乘积的所有数,说明乘积必须为4位(那范围必须在1000到9999之间)
- 不能被100整除
既然是两位数字相乘而得到那么范围就控制在:10~99,必须包含乘积的所有数字那么就表示乘积和这两对数一定要相同,这里我们可以用数组来进行比较。
我们来看一下代码实现
package com.itheima.test; import java.util.Arrays; public class Mian { public static void main(String[] args) { // TODO Auto-generated method stub for (int i = 10; i <100; i++) { //i表示第一个两位数 for (int j = 10; j < 100; j++) { //j表示第二个两位数 int product=i*j; //获得乘积 if(product%100!=0&&product>999&&product<10000) { //过滤条件:1不能被100整除2必须是4位数 String[] value1=String.valueOf(product).split(""); //把乘积转换为字符串,然后在以空格分割为数组 String[] value2=(String.valueOf(i)+String.valueOf(j)).split(""); //把两位数相连接为字符串,然后在以空格分割为数组 Arrays.sort(value1); //排序一下从小到大 Arrays.sort(value2); //排序一下从小到大 if (Arrays.equals(value1, value2)) { //调用Arrays中的静态方法equals进行比较 System.out.println(i+"*"+j+"="+product); //打印吸血鬼数 } } } } } }
这个题就做完啦,就是那么简单