Trouver les premiers nombres premiers

vendredi 31 août 2001 • GF

Ceci ne concerne pas vraiment une technique de programmation, c’est plutôt un exercice pour se former l’esprit, et c’est aussi la démonstration que Java peut servir pour le calcul mathématique.

L’algo mis en place est le plus simple dans le genre: on premd un nombre impair, on le divise par chaque entier impair entre 3 et sa racine carrée. S’il n’a aucun diviseur il est premier.

// Le nombre candidat de départ, mettez la valeur que vous désirez, ce sera le nombre de départ et le programme ira en choisissant des nombres de plus en plus grands
long candidat = 1000;

while (true) // ou for (;;) sont des boucles infinies qui ne vérifient pas de condition
{
// on invoque la méthode estPremier() qui renvoie un booleen: oui ou non le nombre qu’on lui soumet est premier, l’instruction if(estPremier(candidate)) est équivalente
// à if (estPremier(candidate) == true)
if(estPremier(candidate)) {System.out.println(">Est premier le nombre: " + candidate);
}

private static boolean estPremier(long candidat)
{
// Diviser le nombre par tous les entiers impairs entre 3 et sa racine
double racine = Math.sqrt(candidate);
for (long i = 3; i <= sqrt; i += 2) // on incrémente de 2 pour sauter les pairs
{
// si le modulo, c-à-d le reste de la division euclidienne est 0, le nombre est divisible par i, i est donc un facteur, le nombre n’est pas premier.
if (candidat % i == 0) return false;
}
// Si la cdt ci-dessus n’est jamais vérifiée, alors le nombre est premier:
return true;
}

Et voilà, vous n’avez plus qu’à rédiger la méthode main() où à incorporer ce code dans une de vos classes, ici les premiers sont sortis en console. (System.out)

Tutoriel distribué pour le FAQ Java de www.jgflsoft.com ou www.java-france.com
Réédité pour Valhalla GFBLOG.
Ecrit à Montpellier le 31 août 2001

Ceci ne concerne pas vraiment une technique de programmation, c’est plutôt un exercice pour se former l’esprit, et c’est aussi la démonstration que Java peut servir pour le calcul mathématique.

L’algo mis en place est le plus simple dans le genre: on premd un nombre impair, on le divise par chaque entier impair entre 3 et sa racine carrée. S’il n’a aucun diviseur il est premier.

// Le nombre candidat de départ, mettez la valeur que vous désirez, ce sera le nombre de départ et le programme ira en choisissant des nombres de plus en plus grands
long candidat = 1000;

while (true) // ou for (;;) sont des boucles infinies qui ne vérifient pas de condition
{
// on invoque la méthode estPremier() qui renvoie un booleen: oui ou non le nombre qu’on lui soumet est premier, l’instruction if(estPremier(candidate)) est équivalente
// à if (estPremier(candidate) == true)
if(estPremier(candidate)) {System.out.println(">Est premier le nombre: " + candidate);
}

private static boolean estPremier(long candidat)
{
// Diviser le nombre par tous les entiers impairs entre 3 et sa racine
double racine = Math.sqrt(candidate);
for (long i = 3; i <= sqrt; i += 2) // on incrémente de 2 pour sauter les pairs
{
// si le modulo, c-à-d le reste de la division euclidienne est 0, le nombre est divisible par i, i est donc un facteur, le nombre n’est pas premier.
if (candidat % i == 0) return false;
}
// Si la cdt ci-dessus n’est jamais vérifiée, alors le nombre est premier:
return true;
}

Et voilà, vous n’avez plus qu’à rédiger la méthode main() où à incorporer ce code dans une de vos classes, ici les premiers sont sortis en console. (System.out)

Tutoriel distribué pour le FAQ Java de www.jgflsoft.com ou www.java-france.com
Réédité pour Valhalla GFBLOG.
Ecrit à Montpellier le 31 août 2001