对上一篇吸血鬼数算法的优化(二)

2014-11-24 03:19:31 · 作者: · 浏览: 4
}

if(isVampireNumber) {        // 如果是吸血鬼数,则打印出来

System.out.println("A vampire number found: " + i * j + ", (" + i + ", " + j + ").");

}

}

if(boundryReached) {          // ③ 在出现溢出或者超过最大值、并且j等于i的情况下跳出外层循环,因为内层循环的初始条件是j=i,所以此时i再增长的话肯定会溢出或者超过最大值(见①和②)

break;

}

}

}

}

public static int[] getNumberCountList(int[] list, int... nums) {

for(int num : nums) {

do {

list[num % 10]++;

num /= 10;

}while(num != 0);

}

return list;

}

public static int getIntegerLength(int num) {

int len = 0;

do {

len++;

num /= 10;

}while(num != 0);

return len;

}

public static void main(String[] args) {

System.out.println("-------------- Now start computing... --------------");

long s = System.currentTimeMillis();

VampireNumber.find(0, Integer.MAX_VALUE);  // 调用find()函数来求从0到Integer.MAX_VALUE之间的所有吸血鬼数

//VampireNumber.find(0, 900000);

long f = System.currentTimeMillis();

System.out.println("------- Computing finished, time used: " + (f - s) + " ms. -------");

}

}

作者 ini_always