Soyez le premier à donner votre avis sur cette source.
Snippet vu 12 440 fois - Téléchargée 17 fois
public class Main { public static void main(String[] args) { afficherNombresPremiers(100); } public static void afficherNombresPremiers(int n) { System.out.println("Les nombre premier de 0 à " + n + " sont :"); boolean[] tab = new boolean[n + 1]; //initialisation du tableau for (int i = 0; i <= n; i++) { tab[i] = true; } //on retire les nombres impaires for (int i = 4; i <= n; i += 2) { tab[i] = false; } // on sait déja que 2 est premier : // car tab[2] = true; System.out.println("2"); for (int i = 3; i <= n; i += 2) { // on utilise des pas de 2, car tout les nombres pairs ne sont pas premiers. if (tab[i] == true) { System.out.println(i); for (int j = i; j <= n; j += i) { tab[j] = false; } } } } }
13 févr. 2010 à 08:14
13 févr. 2010 à 08:13
Ensuite, tu pourrais stocker les nombres premiers que tu as trouvé dans une liste et ne tester la division que pour ces nombres là, au lieu de retirer les multiples de deux, tu retire tout les nombres composés.
Ce n'est qu'un début mais avec ta méthode pour savoir si 101 est premier, tu vas effectuer 50 calculs, en ajoutant les améliorations que je te propose, tu ne feras que 4 calculs, tu vas apeu pres diviser le temps d'éxécution par 10 !
5 févr. 2009 à 14:20
5 févr. 2009 à 14:18
le résultat m'a l'air juste :p
5 févr. 2009 à 14:08
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.