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 :

[Language]Problème de boucle


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 49
    Par défaut [Language]Problème de boucle
    bonjour j'ai créé un petit programme qui me sort les nombre premier entre 1 et un nombre entré au clavier
    mais il boucle fou
    quelqu'un pourrait-il m'aider voici mon code
    classe premier
    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
     
    import java.io.*;
    public class Premier 
    {
     
    	public void Prem() 
    	{	boolean 		bool=true;
    		int				nb=0;
    		int				j=1;
    		BufferedReader	bf=null;
    	System.out.println (" entrez le nombre voulu ");
    	bf = new BufferedReader ( new InputStreamReader (System.in));
    	try 
    	{
    		nb = Integer.parseInt (bf.readLine());
     
    	}
    	catch ( NumberFormatException e)
    	{
    		e.printStackTrace();
     
    	}
    	catch (IOException e )
    	{
    		e.printStackTrace();
     
    	}
    		while (j<=nb)
    		{for( int i=2;i<j;i++)
    		 {
    			if ( j % i!=0 ) { bool=true;j++;}
    			else	 {bool=false;break;}
     
    		 }
    		if (bool ==true) System.out.println (j );
    		j++;
    	    }
    	}
    }
    main
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    public class NbPremier 
    {
    	public static void main(String[] args) 
    	{
    	Premier	p;
    	p = new Premier();
    	p.Prem();
    	}
     
    }
    un grand merci d'avance
    marc [/quote]




    [Modéré par Didier] : ajout de tag dans le titre - Les règles du forum Java

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 154
    Par défaut
    Salut,
    si tu n'as pas trouvé la réponse à ta question, est ce que tu pourrais préciser un peux le problème.
    Où est ca boucle (en faisant des affichage, tu devrais pouvoir voir quelle variable ne s"incrémente pas. Ou en savoir plus sur le fonctionnement)

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 49
    Par défaut
    voila il commence a me sortir 1 puis 2 puis tout des nombres negatif
    si il faut d'autres renseignement je suis la
    marc

  4. #4
    Membre éprouvé Avatar de BainE
    Inscrit en
    Mai 2004
    Messages
    1 327
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 1 327
    Par défaut
    sans vouloir te vexer c'est coder a la bourrin (pour pas dire a l arrache) et c'est super chaud de te relir meme si y a pas beaucoup de ligne, pour bien debbugger il faut un beau code lisible rien qu avec sa je suis sur que tu gagne en perf

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 49
    Par défaut
    en fait je suis débutant en java et je n'ai pas encore bien assimiler les notions d'objet qu'est ce que tu appelles plus clair comme code
    merci d'avance de votre aide

  6. #6
    Membre émérite
    Avatar de Bloon
    Homme Profil pro
    Consultant Freelance
    Inscrit en
    Avril 2002
    Messages
    467
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant Freelance
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2002
    Messages : 467
    Par défaut Re: [Debutant(e)]exercice java
    Je pense que le problème vient de là :

    import java.io.*;
    public class Premier
    {

    public void Prem()
    { boolean bool=true;
    int nb=0;
    int j=1;
    BufferedReader bf=null;
    System.out.println (" entrez le nombre voulu ");
    bf = new BufferedReader ( new InputStreamReader (System.in));
    try
    {
    nb = Integer.parseInt (bf.readLine());

    }
    catch ( NumberFormatException e)
    {
    e.printStackTrace();

    }
    catch (IOException e )
    {
    e.printStackTrace();

    }
    while (j<=nb)
    {for( int i=2;i<j;i++)
    {
    if ( j % i!=0 ) { bool=true;j++;}
    else {bool=false;break;}

    }
    if (bool ==true) System.out.println (j );
    j++;
    }
    }
    }
    pourquoi faire un j++ à cet endroit ?

    Bloon

  7. #7
    Membre émérite
    Avatar de Bloon
    Homme Profil pro
    Consultant Freelance
    Inscrit en
    Avril 2002
    Messages
    467
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant Freelance
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2002
    Messages : 467
    Par défaut
    et tu peux simplifier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    ...
            int i;
            while (j<=nb) 
            {
              i = 2;
              while ((i < j) && (j % i != 0))
                i++;
              if (i == j)
                System.out.println (j);
              j++;
            } 
    ...
    Bloon

  8. #8
    Membre expérimenté
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 220
    Par défaut
    Tu peux réduire aussi ton algorithme, un nombre est premier si il n'a aucun diviseur autre que 1 et lui meme, mais ca peut aussi se dire qu'il n'a aucun diviseur entre 1 et sa racine carrée... Bref, tu peux faire un test sur i*i<=j*j, ca te réduira ton nombre de tests de moitié... Pour les nombres premiers entre 1 et 10, ca va, y'a pas d'incidence, mais si tu cherches les nombres premiers entre 1 et 2 000 000 000, ca va faire une certaine différence...

  9. #9
    MrX
    MrX est déconnecté
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 46
    Par défaut
    Salut je viens de modifier ton algo
    j'ai fait quelque test et c ok
    Les nb 1er se trouve dans le vecteur

    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
     
    		      int            nb=0;
    		      int            j=1;
    		    Vector nb1er=new Vector();
     
    		      nb = 100;
     
     
    		      while (j<=nb)
    		      {
    		      	boolean prem=true;
    		      	for(int i=2;i<j;i++)
    		      	{
     
    		      		if((j%i)==0){prem=false;break;}
    		      	}
    		      	if(prem)
    		      	{
    		      		nb1er.add(j+"");
    		      	}
    		      	j++;
    		      }
    		      for(int i=0;i<nb1er.size();i++)
    		      {
    		      	System.out.println((String)nb1er.elementAt(i));
    		      }

    @++ Xav

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 49
    Par défaut
    un grand merci a tous je suis nouveau sur ce forum et je reviendrai les gens sont très sympas
    merci de partager vos connaissances
    Marc

  11. #11
    Membre très actif
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2005
    Messages
    153
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 153
    Par défaut
    Marc, si t'as résolu le pb pourrais-tu appyer sur le bouton Résolu stp?
    Merci

  12. #12
    Membre émérite Avatar de benratti
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    471
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2004
    Messages : 471
    Par défaut
    Une petite optimisation au passage qui te fera reduire encore le nombre de test ( mais pas ton espace memoire ), c'est de ne faire tes testes que sur les nombres premiers. Mais cela implque de devoir stocker quelque part la liste des nombres premiers que tu as deja trouve.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. boucle d'iteration en language fortran
    Par saida29 dans le forum Fortran
    Réponses: 1
    Dernier message: 16/03/2014, 15h06
  2. [XL-2007] Probl sur boucle
    Par alexandrek dans le forum Macros et VBA Excel
    Réponses: 19
    Dernier message: 28/01/2011, 12h23
  3. Réponses: 4
    Dernier message: 25/07/2006, 14h29
  4. je veux apprendre la programmation quel language choisir??
    Par existance dans le forum Débuter
    Réponses: 26
    Dernier message: 06/08/2002, 05h32
  5. Réponses: 2
    Dernier message: 29/05/2002, 20h43

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