Java Algorithmique
Conjecture de GoldBach

Objectif : On souhaite écrire un programme Javapour vérifier la conjecture de GoldBach (1742) soit : "Tout nombre pair est décomposable en la somme de deux nombres premiers".
 

Spécifications de l’algorithme :
 

En deux étapes :

1. On entre un nombre pair n au clavier, puis on génère tous les couples (a,b) tels que a + b = n, en faisant varier a de 1 à n/2. Si l'on rencontre un couple tel que a  et b soient simultanément premiers  la conjecture est vérifiée.

2. On peut alors, au choix  soit arrêter le programme, soit continuer la recherche sur un autre nombre pair.

Exemple : 
Pour n = 10, on génère les couples :
(1,9),  (2,8),  (3,7), (5,5)
on constate que la conjecture est vérifiée, et on écrit : 
10 =  3 + 7 
10 =  5 + 5

 

Implantation en Java

On écrira la méthode booléenne EstPremier pour déterminer si un nombre est premier, et la méthode generCouples qui  génère les couples répondant à la conjecture.
 

Proposition de squelette de classe Java à implanter :
 

class ApplicationGoldBach  {
      static void main(String[ ] args) {
         ……..
      }
      static boolean EstPremier(int m)  {
         ……..
      }
      static void generCouples(int n)  {
         ……..
      }
   }

Remonter 


Une classe Java solution du problème :
 
import Readln; // classe contenant des méthodse permettant de lire à partir du clavier

class ApplicationGoldBach {
 
static void main(String[ ] args) {
       int n;
       while ( (n=Readln.unint( )) !=0 ){
       generCouples(n); }
  }
static boolean EstPremier(int m)  {
      int k ;
      for (k = 2 ; k <= m / 2 ; k++) {
           if (m % k == 0) {
            return  false;
           }
       }
      return true;
  }
static void generCouples(int n) {
      if (n % 2 ==0) {
           for (int a = 1; a <= n/2; a++) {
            int  b;
               b = n - a;
            if ( EstPremier(a) && EstPremier(b) ) {
                  System.out.println(n+" = "+a+" + "+b);
            }
           }
         }
         else System.out.println("Votre nombre n'est pas pair !");
  }

}
 

Image en diagrammes structurés JGrasp-Like du programme

informations sur les diagrammes


Remonter