이 코드에서 main
메서드 에서 Object를 생성 한 다음 해당 객체 method : ff.twentyDivCount(i)
(runs in 16010 ms)를 호출하면이 주석을 사용하여 호출하는 것보다 훨씬 빠르게 twentyDivCount(i)
실행됩니다 . (runs in 59516 ms). 물론 객체를 생성하지 않고 실행하면 메서드를 정적으로 만들어서 메인에서 호출 할 수 있습니다.
public class ProblemFive {
// Counts the number of numbers that the entry is evenly divisible by, as max is 20
int twentyDivCount(int a) { // Change to static int.... when using it directly
int count = 0;
for (int i = 1; i<21; i++) {
if (a % i == 0) {
count++;
}
}
return count;
}
public static void main(String[] args) {
long startT = System.currentTimeMillis();;
int start = 500000000;
int result = start;
ProblemFive ff = new ProblemFive();
for (int i = start; i > 0; i--) {
int temp = ff.twentyDivCount(i); // Faster way
// twentyDivCount(i) - slower
if (temp == 20) {
result = i;
System.out.println(result);
}
}
System.out.println(result);
long end = System.currentTimeMillis();;
System.out.println((end - startT) + " ms");
}
}
편집 : 지금까지 다른 컴퓨터가 다른 결과를 생성하는 것처럼 보이지만 JRE 1.8. *를 사용하면 원래 결과가 일관되게 재현되는 것처럼 보입니다.