इस कोड में जब मैं main
विधि में एक ऑब्जेक्ट बनाता हूं और फिर उस ऑब्जेक्ट विधि को कॉल करता ff.twentyDivCount(i)
हूं : (16010 एमएस में चलता है), यह एनोटेशन का उपयोग करके इसे कॉल करने की तुलना में बहुत तेज चलता है: twentyDivCount(i)
(59516 एमएस में चलता है)। बेशक, जब मैं इसे एक ऑब्जेक्ट बनाए बिना चलाता हूं, तो मैं विधि को स्थिर बनाता हूं, इसलिए इसे मुख्य में कहा जा सकता है।
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");
}
}
EDIT: अब तक ऐसा लगता है कि विभिन्न मशीनें अलग-अलग परिणाम देती हैं, लेकिन JRE 1.8 का उपयोग करते हुए। जहां मूल परिणाम लगातार पुन: उत्पन्न होता है।