题目:吸血鬼数字是指位数为偶数的数字,可以由一对数字相乘而得到,而这对数字各包含乘积的一半位数的数字,其中从最初的数字中选取的数字可以任意排序。以两个0结尾的数字是不允许的,例如,下列数字都是“吸血鬼”数字:
1260=21*60
1827=21*87
2187=27*81
写一个程序,找出4位数的所有吸血鬼数字。
/** * <p>吸血鬼数字</p> * @author Shockang * */ public class TheVampireNumbers { /** * <p>判断一个4位数是否为吸血鬼数字的方法</p> * @param num * @return boolean */ private static boolean isVampire(int num) { int n1=num/1000;//4位数的首位数字 int n2=(num-n1*1000)/100;//第二位数字 int n3=(num-n1*1000-n2*100)/10;//第三位数字 int n4=num-n1*1000-n2*100-n3*10;//末位数字 //判断数字组合成的数乘积是否为原来的数 if( (n1*10+n2)*(n3*10+n4)==num || (n1*10+n2)*(n4*10+n3)==num || (n2*10+n1)*(n3*10+n4)==num || (n2*10+n1)*(n4*10+n3)==num || (n1*10+n3)*(n2*10+n4)==num || (n1*10+n3)*(n4*10+n2)==num || (n3*10+n1)*(n2*10+n4)==num || (n3*10+n1)*(n4*10+n2)==num || (n1*10+n4)*(n2*10+n3)==num || (n1*10+n4)*(n3*10+n2)==num || (n4*10+n1)*(n2*10+n3)==num || (n4*10+n1)*(n3*10+n2)==num ) { return true; } else { return false; } } public static void main(String[] args) { for(int i=1000;i<10000;i++) { if(isVampire(i)) { System.out.println(i); } } } }
时间: 2024-12-14 04:26:21