public static void tradition(int n) {
long start = System.currentTimeMillis();
if (n <= 0) {
return;
}
double total = Math.pow(10, n);
long number = 0;
long value;
for (long index = 0; index < total; index++) {
number = 0;
value = index;
while (value > 9) {
String pow_valueString = String.valueOf(value);
int pow = (int) Math.pow(10, pow_valueString.length() - 1);
number = number + (int) Math.pow(value / pow, n);
value = (long) (value % pow);
}
number += (int) Math.pow(value, n);
if (number == index) {
System.out.println(index + ":水仙花数");
}
}
long end = System.currentTimeMillis();
System.out.println("总共运行时间:" + (end - start));
}
public static void optimization(int n) {
long start = System.currentTimeMillis();
Map<Integer, Long> numberMap = new HashMap<Integer, Long>();
for (int index = 0; index < 10; index++) {
numberMap.put( index, (long) Math.pow(index, n));
}
if (n <= 0) {
return;
}
double total = Math.pow(10, n);
long number = 0;
long value;
for (long index = 0; index < total; index++) {
number = 0;
value = index;
while (value > 9) {
String pow_valueString = String.valueOf(value);
int pow = (int) Math.pow(10, pow_valueString.length() - 1);
number = number + numberMap.get( (int) (value / pow) );
value = (long) (value % pow);
}
number += numberMap.get((int)value);
if (number == index) {
System.out.println(index + ":水仙花数");
}
}
long end = System.currentTimeMillis();
System.out.println("总共运行时间:" + (end - start));
}