Header Ads

La valeur d'un break

Etudiants à L'Université Protestante de Lubumbashi
Quand dans mes cours de Java, je dis aux étudiants que la programmation nous apprend la valeur des petites choses: d’une virgule, d’une accollade, d’un point-virgule… En général, ils sourient ou carrément rigolent.
A la dernière interro, j’ai demandé d’écrire en Java, un algorithme qui écrit les n (introduits par l’utilisateurs) nombres premiers par ordre croissant. J’avais copié l’exercice dans un livre (Java 2 – Les fondements du langage)  mais la résolution proposée ainsi que mes recherches sur le net ne m’ont pas convaincue.
La solution trouvée est celle-ci et ça marche surtout grâce à une seule ligne de code le break;
Jugez par vous-même et surtout ne négligez pas les petites choses
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package esijava;

import java.util.Scanner;

/**
 *
 * @author Assina
 */
public class Interro1 {
    public static void main(String[] args) {
      int n,nbr =0;
boolean Est_premier ;
int divis,compt;

        System.out.println("combien de nombre premiers voulez vous afficher ?");
        Scanner sc = new Scanner(System.in);
        n= sc.nextInt();
       compt =1;
        System.out.println("Les nombres premiers sont: 2");
        nbr = 3;
        while(compt < n) {

         divis = 3;
         Est_premier = true;
                do{
                    if((nbr%divis) ==0){
                        if(nbr==3)Est_premier=true; // 3 est divisible par 3 mais c'est
                        //quand meme un nombre premier
                        else{
                        Est_premier=false;
                        break; // C'est ce break ICI qui a fait toute la différence
                        }
                    }
                    else{
                        divis = divis+2;
                    }

                }while((divis <(nbr/2)) |Est_premier ==false);

              if(Est_premier){
                    System.out.println(nbr);
                     compt++;
               }
                nbr = nbr +2; // tous les nombres premiers sont impairs a part 2

        }

    }

}

Je suis ouverte à toute amélioration à ce code! A bientôt!
Fourni par Blogger.