The following program is created to to calculate the perfect power of numbers
The end result is to have the Perfect Power complete all test cases in under .01s of elapsed execution time.
Currently the program end result time performance is at about 2+secs for 10,000 and the one for 1073741824 takes much much longer. Need assistance to help lower the time for all perfect-powers to be .01 seconds and less.
Below is the program code:
/**
*
* A utlity class to calculate the perfect power of an integer
*/
public class PerfectPower {
public static void main(String[] args) {
new TimeExec(new Runnable() {
public void run() {
System.out.println("Perfect Power of 17 is " + getPerfectPower(17));
}
}, "Get Perfect Power of 17", System.out).start();
new TimeExec(new Runnable() {
public void run() {
System.out.println("Perfect Power of 625 is " + getPerfectPower(625));
}
}, "Get Perfect Power of 625", System.out).start();
new TimeExec(new Runnable() {
public void run() {
System.out.println("Perfect Power of 1024 is " + getPerfectPower(1024));
}
}, "Get Perfect Power of 1024", System.out).start();
new TimeExec(new Runnable() {
public void run() {
System.out.println("Perfect Power of 10000 is " + getPerfectPower(10000));
}
}, "Get Perfect Power of 10000", System.out).start();
new TimeExec(new Runnable() {
public void run() {
System.out.println("Perfect Power of 1073741824 is " + getPerfectPower(1073741824));
}
}, "Get Perfect Power of 1073741824", System.out).start();
}
/**
* Get the perfect power for a number.
* @param x number for which to calculate the perfect power.
*/
public static int getPerfectPower(int x) {
int largestP = 1;
for (int b = 1; b < x; b++) {
for (int p = 1; p < x; p++) {
if (Math.pow(b,p) == x) {
largestP = p;
}
}
}
return largestP;
}
}
end code:
Perfect Power of 17 is 1 TimeExec: Get Perfect Power of 17: 0.001s
Perfect Power of 625 is 2 TimeExec: Get Perfect Power of 625: 0.026s
Perfect Power of 1024 is 2 TimeExec: Get Perfect Power of 1024: 0.052s
Perfect Power of 10000 is 2 TimeExec: Get Perfect Power of 10000: 1.9s
need this code here to print under .01s Perfect Power of 1073741824 is X TimeExec: Get Perfect Power of : XX.XXXs