Partage
  • Partager sur Facebook
  • Partager sur Twitter

"Nombre Premier"

Sujet résolu
    31 mars 2015 à 22:32:37

    Bonjour a tous, 

    Ca fait quelque temps que je bloque sur un problème assez con. J'aimerais afficher les n premiers nombre premier. J'ai déjà reussi à le faire avec 3 boucles mais je sais pas s'il est possible de le simplifier.

    J'ai écrit le code suivant mais pas moyen ca marche pas, si quelqu'un voyait un peu ce qui ne vas pas ca me rendrait un service enorme ...

    static int [] nombrePremier(int n){//calcul des n premiers nombre premiers
    
    		int [] tab = new int[n];
    		if(n>0){
    			for(int i=2;i<n;i++){
    				for(int j=1;j<i;j++){
    					if(i%j==0){
    					}else{
    						tab[i]=i;
    					}
    				}
    			}
    		}
    		return tab;
    	}



    • Partager sur Facebook
    • Partager sur Twitter
      31 mars 2015 à 23:08:44

      public boolean estPremier(int nombre)
         {
            // Limite des facteurs.
            int limite = (int) Math.sqrt(nombre);
      
            // Vérifier s'il possède des facteurs.
            for(int i = 2; i <= limite; i++)
               if(nombre % i == 0)
                  return false;
      
            return true;
         }
      Azourkaï
      • Partager sur Facebook
      • Partager sur Twitter
      Tout le monde est un génie. Mais si on juge un poisson sur sa capacité à grimper à un arbre, il passera sa vie à croire qu’il est stupide.
        31 mars 2015 à 23:40:14

        static int [] nombrePremier(int n){
               
                int[] tab = new int[n];
                int prem = 0;
                int postab = 0;
               
                for (int i = 1; i < n; i++) {
                    for (int j = 1; j < i; j++) {
                        if (i % j == 0) {
                            prem++;          // ajoute un a prem si reste egal 0
                        }
                    }
                    if (prem == 1) {       // si plus d'une fois pas premier
                        tab[postab] = i;
                        postab++;
                    }
                    prem = 0;               // valeur à 0 pour prochain test
                }
                   return tab;
            }

         J'ai ca mais je en sais pas si c'est performant.. En tout cas ça marche chez moi après je débute aussi en java ..



        -
        Edité par Dubtest 31 mars 2015 à 23:45:02

        • Partager sur Facebook
        • Partager sur Twitter
          31 mars 2015 à 23:42:33

          Merci le code fonctionne désormais ca donne ca :)

          static boolean estPremier(int nombre)
          	   {
          	      // Limite des facteurs.
          	      int limite = (int) Math.sqrt(nombre);
          	 
          	      // Vérifier s'il possède des facteurs.
          	      for(int i = 2; i <= limite; i++)
          	         if(nombre % i == 0)
          	            return false;
          	 
          	      return true;
          	   }
          	static int [] nombrePremier(int n){//calcul des n premiers nombre premiers
          		int place=0;
          		int [] tab = new int[n];
          		if(n>0){
          			for(int i=2;place<n;i++){
          					if(estPremier(i)&&place!=n){
          						tab[place]=i;
          						place++;
          					}
          				
          			}
          		}
          		return tab;
          	}



          • Partager sur Facebook
          • Partager sur Twitter
            31 mars 2015 à 23:48:03

            Pierre Merci, je n'ai pas essayé si ton code mais tu devrais arrêter ton calcul à (j<racine de i), pour faire mon de calcul. Car si on donne trop de nombre il va doubler les calculs :) Avec un peu de fun on pourrais même éviter les nombre paires x)
            • Partager sur Facebook
            • Partager sur Twitter
              31 mars 2015 à 23:59:59

              En enlevant les calcul pour les diviseurs pairs :) 

              static boolean estPremier(int nombre){
              		if(nombre%2==0&&nombre!=2){
              			return false;
              		}
              		if(nombre%2!=0){
              		// Limite des facteurs.
              		int limite = (int) Math.sqrt(nombre);
              
              		// Vérifier s'il possède des facteurs.
              		for(int i = 2; i <= limite; i++)
              			if(nombre % i == 0)
              				return false;
              		}
              		return true;
              	}
              	static int [] nombrePremier(int n){//calcul des n premiers nombre premiers
              		int place=0;
              		int [] tab = new int[n];
              		if(n>0){
              			for(int i=2;place<n;i++){
              					if(estPremier(i)&&place!=n){
              						tab[place]=i;
              						place++;
              					}
              				
              			}
              		}
              		return tab;
              	}
              

              Enfin bref merci pour votre aide :) la communauté est très présente ca fait plaisir merci beaucoup a vous. 

              • Partager sur Facebook
              • Partager sur Twitter
                1 avril 2015 à 9:24:17

                static boolean estPremier(int nombre){
                       if(nombre == 2){
                       }else if(nombre%2==0){
                            return false;
                       }else{
                            // Limite des facteurs.
                            int limite = (int) Math.sqrt(nombre);
                 
                            // Vérifier s'il possède des facteurs.
                            for(int i = 2; i <= limite; i++)
                                if(nombre % i == 0)
                                     return false;
                       }
                       return true;
                    }

                Azourkaï

                -
                Edité par Azourkaï 1 avril 2015 à 9:38:07

                • Partager sur Facebook
                • Partager sur Twitter
                Tout le monde est un génie. Mais si on juge un poisson sur sa capacité à grimper à un arbre, il passera sa vie à croire qu’il est stupide.

                "Nombre Premier"

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown