Trong đoạn mã này khi tôi tạo một Đối tượng trong main
phương thức và sau đó gọi phương thức đối tượng đó: ff.twentyDivCount(i)
(chạy trong 16010 mili giây), nó chạy nhanh hơn nhiều so với việc gọi nó bằng cách sử dụng chú thích này: twentyDivCount(i)
(chạy trong 59516 mili giây). Tất nhiên, khi tôi chạy nó mà không tạo một đối tượng, tôi làm cho phương thức tĩnh, vì vậy nó có thể được gọi trong main.
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");
}
}
CHỈNH SỬA: Cho đến nay, có vẻ như các máy khác nhau tạo ra các kết quả khác nhau, nhưng sử dụng JRE 1.8. * Là kết quả ban đầu dường như được sao chép nhất quán.