Dans ce code, lorsque je crée un objet dans la main
méthode, puis que j'appelle cette méthode d'objets: ff.twentyDivCount(i)
(s'exécute en 16010 ms), elle s'exécute beaucoup plus rapidement que de l'appeler en utilisant cette annotation: twentyDivCount(i)
(s'exécute en 59516 ms). Bien sûr, quand je l'exécute sans créer d'objet, je rends la méthode statique, donc elle peut être appelée dans le 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");
}
}
EDIT: Jusqu'à présent, il semble que différentes machines produisent des résultats différents, mais en utilisant JRE 1.8. * Est l'endroit où le résultat original semble être reproduit de manière cohérente.