Bonsoir,
Je suis actuellement en train d'essayer d'écrire un programme Java permettant de calculer la somme de tous les nombres premiers inférieurs à un N donné en utilisant le crible d'Ératosthène. Je dois impérativement utiliser le parallélisme et donc les threads pour résoudre ce problème. Plus concrètement, je dispose d'un tableau de booléens de taille N (chaque indice représente un nombre jusque N) et je dois "marquer" tous les multiples d'un nombre premier (en commençant donc par 2) afin d'éliminer tous les nombres qui ne sont pas premiers et me retrouver au final avec un tableau dans lequel il ne me reste que les nombres premiers.
Le problème est donc le suivant : je dois scinder ce tableau en sous-tableaux et faire en sorte qu'un sous-tableau = un thread (le nombre total de threads est une constante de compilation). Je dois donc affecter le marquage de chaque sous-tableau à un thread différent. Cela permet de pouvoir marquer tous les multiples d'un nombre donné en parallèle dans tous les sous-tableau pour accélérer le traitement global. Le problème est que je ne vois pas du tout comment m'y prendre pour résoudre ce problème. Je sais qu'il faut commencer par diviser le tableau en fonction du nombre de threads voulu (par exemple si le nombre de threads vaut 5 et que mon N est égal à 50, je vais certainement devoir diviser le tableau en 5 sous-tableaux de taille 10). Hormis cela, je ne vois pas comment continuer...
Une âme charitable pourrait-elle me guider vers un début de solution ?
Un grand merci par avance,
Bien à vous