Java编程思想——吸血鬼数字问题
吸血鬼数字:我最开始想的是把四位数拆开,然后进行自由组合然后相乘,最后比较得到结果,在网上去看了一些朋友的做法,让我大吃一惊啊,想到自己的算法也要好好看了 ,这样子下去是不行滴
现贴出代码:
package edu.cqu.main; import java.util.Arrays; /** * 问题描述: * 吸血鬼数字是指位数为偶数的数字,可以由一对数字相乘而得到,而这对数字各包含乘积的一半位数的数字, * 其中从最初的数字中选取的数字可以任意排序。 * 例如: * 1260 = 21 * 60 1827 = 21 * 87 2187 = 27 * 81 * 要求输出所有四位数的吸血鬼数字。 * * @author Gabby * */ public class VampireNumber { public static void main(String[] args) { for(int i = 1; i < 100; i++){ for(int j = i+1; j < 100; j++){ //只要求输出四位数 if(i * j >= 1000){ String a = i + "" + j; String b = i * j + ""; if(equal(a, b)){ System.out.printf("%d * %d = %d", i, j, i*j); System.out.println(); } } } } } //判断两个字符串包含的数字是否一致 private static boolean equal(String a, String b) { //先排序 char[] as = a.toCharArray(); char[] bs = b.toCharArray(); Arrays.sort(as); //排序 Arrays.sort(bs); //排序 if(Arrays.equals(as, bs)){ return true; } return false; } }