IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

[débutant]Trouver des nombres premiers


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Février 2006
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 58
    Par défaut [débutant]Trouver des nombres premiers
    Bonjour,

    Je suis débutant en programmation et je dois réaliser un petit programme Java, mais je n'obtiens aucun résultat...pourtant, j'y ai passé des heures

    Pourriez-vous me remettre sur la voie?

    Merci beaucoup,

    Sébastien


    Voici l'énoncé du problème:

    Un nombre premier est un nombre entier positif qui est divisible uniquement par lui-même et par un.

    a. Spécifiez la pré- et postcondition une méthode permettant de calculer le nombre de nombres premiers entre l'entier min et l'entier max.

    b. Ecrivez le corps de cette méthode sans utiliser de boucle for.
    Ma réponse:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
     /**
     * Classe renvoyant le nombre de nombres premiers entre les entiers naturels x et y.
     * 
     * @author  Sébastien 
     * @version 16/10/2006
     */
    public class Premier
    {
     
        //Méthode
     
     
        /** 
         * @param  min et max deux int positifs
         * @return     renvoie le nombre de nombres entiers entre min et max
         */
     
        public int premier()
     
        {
            int i = 5;  //correspond à min
            int y = 27; //correspond à max
     
            double entier = 0.0;
            int comptepremier = 0;
     
            int denum = 0;
            boolean cond = true;
            int reste = 0;
     
     
     
            while(i<y){
     
                denum = i-1;
     
                while( (denum>1) && (  cond = true )) {
     
                    reste = i % denum;
     
     
                    if ( (i % denum) != 0) {               
     
                       cond = true;
     
     
                       }
                       else{
                           cond = false;
     
                       }
     
                       denum = denum - 1;
     
                   }
                   //Fin de la boucle while interne
     
                   if(cond = true){
     
                       comptepremier++;
     
                   }
     
                   i+=1;
     
               }//Fin de la boucle while externe
     
               return comptepremier;
     
        }//Fin de la méthode premier
     
    }//Fin de la classe Premier

    Et la classe test:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     /**
     * Classe testant Premier
     * 
     * @author (your name) 
     * @version (a version number or a date)
     */
    public class Test
    {  
     
        public static void main(String args[]){
     
            Premier obj = new Premier();
     
           System.out.println(obj.premier());
        }
    }

  2. #2
    Membre émérite
    Profil pro
    Architecte technique
    Inscrit en
    Mars 2002
    Messages
    966
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mars 2002
    Messages : 966
    Par défaut



    Ton algorythme est il bon pour vérifier tes nombres premiers ?

  3. #3
    Membre expérimenté
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Mars 2002
    Messages
    192
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Mars 2002
    Messages : 192
    Par défaut
    Salut,

    ton algorithme me semble à peu près bon à l'exception de la condition d'arrêt de la boucle principale.
    Après si je peux me permettre de te donner quelques conseils:
    • répond aux questions que l'on te pose, à savoir expose tes pré & posts conditions
    • utilise des noms de variable explicite (min pr le minimum, ...)

    En utilisant des noms de variables un petit peu mieux adaptés ton programme devient nettement plus lisible, compréhensible et debuggable:
    Code JAVA : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    package test;
     
    public class PremierTest {
     
    	/**
             * @param args
             */
    	public static void main(String[] args) {
    		int min  = Integer.parseInt(args[0]);
    		int max = Integer.parseInt(args[1]);
     
    		int current = min;
    		int diviseur = 0;
    		boolean isPremier = true;
    		int nbPremier = 0;
     
    		while (current <= max) {
    			isPremier = true;
    			diviseur = current - 1;
    			while (diviseur > 1 && isPremier) {
    				isPremier = (current%diviseur!=0);
    				diviseur--;
    			}
    			if (isPremier) {
    				nbPremier++;
    				System.out.print(current + " ");
    			}
    			current++;
    		}
     
    		System.out.println(" => " + nbPremier + " numbers found between " + min + " & " + max);
    	}
    }

    Matthieu

  4. #4
    Membre Expert
    Profil pro
    Fabrication GED
    Inscrit en
    Octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405
    Par défaut
    while( (denum>1) && ( cond = true )) {
    Ca c'est une affection, pour effectuer une comparaison c'est l'opérateur == :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    while( (denum>1) && (  cond == true )) {

  5. #5
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut
    Citation Envoyé par iohack
    Ca c'est une affection, pour effectuer une comparaison c'est l'opérateur == :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    while( (denum>1) && (  cond == true )) {
    Et comme c'est un booléen:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while ((denum>1) && cond)

  6. #6
    Membre Expert
    Profil pro
    Fabrication GED
    Inscrit en
    Octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405
    Par défaut
    Oui vais vu qu'il débute et que c'est un exercice, je doute que son prof apprécie ce genre de raccourcis ( à mois que ce dernier ne soit adepte d'assembleur ou de programmation obscure en c )

Discussions similaires

  1. Réponses: 9
    Dernier message: 09/01/2010, 05h52
  2. Générer des nombres premiers trés grands
    Par Midou45 dans le forum Mathématiques
    Réponses: 9
    Dernier message: 04/05/2008, 01h20
  3. Trouver des nombres impairs
    Par Lou_anne dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 07/06/2007, 17h39
  4. Cripter avec des nombres premiers
    Par clovis dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 14/04/2004, 20h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo