吸血鬼数字是指位数是偶数的数字, 由一对相乘的数字得到, 而且每个数字包含乘积一半位数的数字.
如:
1092: 12*91
1207: 17*71
1250: 25*50
1260: 21*60
1275: 17*75
1278: 18*71
1325: 25*53
找出4位数的所有吸血鬼数字.
//: Main.java
import java.util.ArrayList;
/**
* 吸血鬼数字
*/
class Main {
public static boolean vampire(int num) {
String snum = Integer.toString(num);
char[] ac = snum.toCharArray();
// 拼接两个数
ArrayList<String> as = new ArrayList<String>();
for (int i=0; i<ac.length; ++i) {
for (int j=0; j<ac.length; ++j) {
if (j == i) continue;
String tmp = ""+ac[i] + ac[j];
as.add(tmp);
}
}
// 转换数字
int[] ai = new int[as.size()];
for (int i=0; i<as.size(); ++i) {
ai[i] = Integer.valueOf(as.get(i));
}
// 验证吸血鬼数字
for (int i=0; i<as.size(); ++i) {
for (int j=0; j<as.size(); ++j) {
if (j == i) continue;
if (ai[i] * ai[j] == num) {
System.out.println(num + ": " + ai[i] + "*" + ai[j]);
return true;
}
}
}
return false;
}
public static void main(String[] args) {
for (int i=1000; i<10000; ++i) {
vampire(i);
}
}
}
/**
* Output:
1092: 12*91
1207: 17*71
1250: 25*50
1260: 21*60
1275: 17*75
1278: 18*71
1325: 25*53
...
*///:~
版权声明:本文为博主原创文章,未经博主允许不得转载。
时间: 2024-12-13 08:54:49