Ceci est un programme Java pour trouver le nombre avec les plus grands diviseurs de 1-500000.Ce programme de threads me montre des réponses différentes à chaque fois
public class Medium2 {
static int count1 = 1;
static int count2 = 1;
static int big_count = 0;
static int big = 0;
Méthode principale
public static void main(String[] args) {
Runnable runnable1 = new Runnable() {
public void run() {
La mise en œuvre va ici
for (int num = 1; num <= 500000; num++) {
for (int i = 2; i <= num; i++) {
if (num % i == 0) { //Actual Logic
count1++;
}
}
if (count1 > big_count) {
big_count = count1; //Number of Divisors
big = num; //Largest Number
}
count1 = 1;
}
}
};
Et l'exécution du thread
Thread thread1 = new Thread(runnable1); //Threads
Thread thread2 = new Thread(runnable1);
thread1.start();
thread2.start();
try {
thread1.join();
thread2.join();
} catch (InterruptedException ie) {
;
}
System.out.println("Biggest: " + big + "\nNumber of Divisors for " + big + " = " + big_count);
}
}
Mais il donne des réponses différentes à chaque fois. La réponse est: 498960 et 200 Divisors
"la réponse réelle est:" ... non, ce n'est pas le cas. la réponse réelle dépend de la course, pas de ce que vous pensez. vous obtenez des résultats différents, car chaque fois il y a des résultats différents – Stultuske
D'où vient le "mais"? Votre programme est à fond dans les courses de données. –
thread donnera résultat différent sur les différentes courses –