求解吸血鬼数的正向求解思路:
1.从1000到9999将所有的四位数都遍历一遍
2.将遍历的数拆分成四个一位数
3.由四个一位数进行组合,得到每组两个的两位数
4.两个两位数进行相乘判断乘积是否与未拆分前的数相等
package xiaocheshi.com.ftl;
import java.util.Arrays;
import javax.swing.plaf.basic.BasicInternalFrameTitlePane.MaximizeAction;
public class XiXueGuiShu {
public static void main(String[] args) {
//正向思维,将一个四位数拆分成两个两位数
//思路清晰,但输出比较麻烦
for (int i = 1000; i < 10000; i++) {
//将四位数按位拆分
int a=i/1000;
int b=(i%1000)/100;
int c=(i%100)/10;
int d=i%10;
//将拆分的四位数按位组合成两个两位数
int m1=a*10+b;
int m2=c*10+d;
int m3=a+b*10;
int m4=c+d*10;
int n1=a*10+c;
int n2=b*10+d;
int n3=a+c*10;
int n4=b+d*10;
int p1=a*10+d;
int p2=b+c*10;
int p3=a+d*10;
int p4=b+c*10;
if (m1*m2==i) {
if (m1>m2) {
System.out.println(i+"="+m2+"*"+m1);
}else {
System.out.println(i+"="+m1+"*"+m2);
}
continue;
}
if (m3*m4==i) {
if (m3>m4) {
System.out.println(i+"="+m4+"*"+m3);
}else {
System.out.println(i+"="+m3+"*"+m4);
}
continue;
}
if (m1*m4==i) {
if (m1>m4) {
System.out.println(i+"="+m4+"*"+m1);
}else {
System.out.println(i+"="+m1+"*"+m4);
}
continue;
}
if (m3*m2==i) {
if (m3>m2) {
System.out.println(i+"="+m2+"*"+m3);
}else {
System.out.println(i+"="+m3+"*"+m2);
}
continue;
}
if (n1*n2==i) {
if (n1>n2) {
System.out.println(i+"="+n2+"*"+n1);
}else {
System.out.println(i+"="+n1+"*"+n2);
}
continue;
}
if (n3*n4==i) {
if (n3>n4) {
System.out.println(i+"="+n4+"*"+n3);
}else {
System.out.println(i+"="+n3+"*"+n4);
}
continue;
}
if (n1*n4==i) {
if (n1>n4) {
System.out.println(i+"="+n4+"*"+n1);
}else {
System.out.println(i+"="+n1+"*"+n4);
}
continue;
}
if (n3*n2==i) {
if (n3>n2) {
System.out.println(i+"="+n2+"*"+n3);
}else {
System.out.println(i+"="+n3+"*"+n2);
}
continue;
}
if (p1*p2==i) {
if (p1>p2) {
System.out.println(i+"="+p2+"*"+p1);
}else {
System.out.println(i+"="+p1+"*"+p2);
}
continue;
}
if (p3*p4==i) {
if (p3>p4) {
System.out.println(i+"="+p4+"*"+p3);
}else {
System.out.println(i+"="+p3+"*"+p4);
}
continue;
}
if (p1*p4==i) {
if (p1>p4) {
System.out.println(i+"="+p4+"*"+p1);
}else {
System.out.println(i+"="+p1+"*"+p4);
}
continue;
}
if (p3*p2==i) {
if (p3>p2) {
System.out.println(i+"="+p2+"*"+p3);
}else {
System.out.println(i+"="+p3+"*"+p2);
}
continue;
}
}
由于代码的输出部分未合并和整理,显得有些杂乱
输出结果: