【问题描述】
【问题描述】吸血鬼数字是指位数为偶数的数字,可以由一对数字相乘得到,这对数字各包含乘积的一半位数的数字,数字选取后可任意排序,例如: 1260=21×60 1827=21×87 2187=27×81。写出一个程序,找出4位数的所有吸血鬼数字。
【输入形式】无
【输出形式】输出所有的吸血鬼数字,数字之间已空格分隔。
【样例输入】无
【样例输出】1260 1395 1435 1530 1827 2187 6880
【问题分析】
就是将所有1000-9999的四位数,拆分成4个数字,再将这4个数两两组成一个两位数,将这两个两位数进行相乘,若存在这样的两个两位数相乘结果等于原来的四位数,那么就输出这个四位数。
【代码】
public class Ex4 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] a=new int[4];
int[] n1=new int[2];
int[] n2=new int[2];
int num,c1,c2;
for(int i=1000;i<10000;i++)
{
mult:
{
num=i;
for(int j=0;j<4;j++)
{
a[j]=num%10;
num/=10;
}
for(int j=0;j<4;j++)
{
for(int k=j+1;k<4;k++)
{
for(c1=0;c1==j||c1==k;c1++);
for(c2=1;c2==j||c2==k||c2==c1;c2++);
n1[0]=a[j]*10+a[k];
n1[1]=a[j]+a[k]*10;
n2[0]=a[c1]*10+a[c2];
n2[1]=a[c2]*10+a[c1];
for(int m=0;m<2;m++)
{
for(int l=0;l<2;l++)
{
if(n1[m]*n2[l]==i)
{
System.out.print(i+" ");
break mult;
}
}
}
}
}
}
}
}
}
【学习】
在使用标记的时候,若标记中包含有多条语句,那么要加一个{},否则不能识别到会报错。