吸血鬼数字

  1. /*
  2.  * 吸血鬼数字是指位数为偶数的数字,可以由一对数字相乘得到,而这对数字各包含乘积的一般的数字,其中从
  3.  * 最初的数字中选取的数字可以任意排序。由两个0结尾的数字是不允许的。例如:
  4.  * 1260 = 21 * 60
  5.  * 1827 = 21 * 87
  6.  * 2187 = 27 * 81
  7.  * 
  8.  * @author yangjianguo
  9.  */
  10. public class VampireNumbers {   
  11.         static int a(int i) {
  12.             return i/1000;
  13.         }
  14.         static int b(int i) {
  15.             return (i%1000)/100;
  16.         }
  17.         static int c(int i) {
  18.             return ((i%1000)%100)/10;
  19.         }
  20.         static int d(int i) {
  21.             return ((i%1000)%100)%10;
  22.         }
  23.         static int com(int i, int j) {
  24.             return (i * 10) + j;
  25.         }
  26.         static void productTest (int i, int m, int n) {
  27.             if(m * n == i) System.out.println(i + " = " + m + " * " + n);
  28.         }   
  29.     public static void main(String[] args) {        
  30.         for(int i = 1001; i < 9999; i++) {          
  31.             productTest(i, com(a(i), b(i)), com(c(i), d(i)));
  32.             productTest(i, com(a(i), b(i)), com(d(i), c(i)));
  33.             productTest(i, com(a(i), c(i)), com(b(i), d(i)));
  34.             productTest(i, com(a(i), c(i)), com(d(i), b(i)));
  35.             productTest(i, com(a(i), d(i)), com(b(i), c(i)));
  36.             productTest(i, com(a(i), d(i)), com(c(i), b(i)));
  37.             productTest(i, com(b(i), a(i)), com(c(i), d(i)));
  38.             productTest(i, com(b(i), a(i)), com(d(i), c(i)));
  39.             productTest(i, com(b(i), c(i)), com(d(i), a(i)));
  40.             productTest(i, com(b(i), d(i)), com(c(i), a(i)));
  41.             productTest(i, com(c(i), a(i)), com(d(i), b(i)));
  42.             productTest(i, com(c(i), b(i)), com(d(i), a(i)));
  43.         }           
  44.     } 
  45. }

 

输出结果:

1260 = 21 * 60
1395 = 15 * 93
1435 = 41 * 35
1530 = 51 * 30
1827 = 87 * 21
2187 = 27 * 81
6880 = 86 * 80
6880 = 80 * 86

你可能感兴趣的:(Java,SE)