Méthode Boolean en Java [Fermé]

Signaler
-
Messages postés
16372
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
23 juillet 2021
-
Bonjour,
je suis débutant en Java, très débutant même. Je veux créez une classe NombrePremier contenant une boolean qui renvoie true si le nombre donné est un nombre premier et false sinon. Voici ce que j'ai fais:

public class NombrePremier
{
public static boolean bool (int nb)
{
int i;
for (i=2;i<=nb;i++)
{
if(nb>=2 && nb%i==0) return bool=true;//nombres premiers commencent par 2
else return bool =false;
break;
}
}
public static void main( String args [ ] )
{
int nb=2;
bool(nb);
}

}

mais ça n'marche toujours. Pourrais-je avoir un peu d'aide svp!

Merci.


A voir également:

7 réponses

Messages postés
38573
Date d'inscription
jeudi 4 avril 2002
Statut
Modérateur
Dernière intervention
27 juillet 2021
1 990
bonjour

purquoi tu fais une boucle "for" alors que tu ne donnes qu'un seul argument (nb) ??? Ce serait un tableau ou un arraylist, d'accord, mais là...
2
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

Mais pour tester s'il est premier.
nb/1, puis par 2, 3...
Messages postés
38573
Date d'inscription
jeudi 4 avril 2002
Statut
Modérateur
Dernière intervention
27 juillet 2021
1 990
un simple modulo suffit alors ..
en fait mon problème c'est le "i" comment le remplacer si je n'mets pas une boucle???
Merci beaucoup pour votre aide... voici le code donc:

package training;

public class NombrePremier
{
public static boolean bool (int nb)
{
if(nb>=2 && nb%i==0) return bool=true;//nombres premiers commencent par 2
else return bool =false;
}
public static void main( String args [ ] )
{
int nb=2;
bool(nb);
}

}

Pourquoi ça marche toujours pas!
package training;

public class NombrePremier
{
public static boolean bool (int nb)
{
boolean premier=false;
if(nb>=2 && nb%nb/2==0) return premier=true;
else return premier=false;
}
public static void main( String args [ ] )
{
int nb=2;
bool (nb);
}
}

Je crois que j'ai progressé, mais il reste un dernier truc, c'est quoi svp? Parce que ça marche toujours pas!
Messages postés
38573
Date d'inscription
jeudi 4 avril 2002
Statut
Modérateur
Dernière intervention
27 juillet 2021
1 990
public class NombrePremier
{
public static boolean bool (int nb)
{
boolean premier=false;
if(nb>=2 && nb%nb/2==0) premier=true;

return premier;

}
public static void main( String args [ ] )
{
int nb=2;
bool (nb);
}
}

ton booleén est déjà initialisé à false, essaye comme ça
Mais il n'affiche toujours rien, je veux qu'il affiche la valeur qu'il renvoi!
Messages postés
140
Date d'inscription
vendredi 14 septembre 2007
Statut
Membre
Dernière intervention
10 avril 2014
61
Bonsoir,
dans le main, tu dois invoquer la méthode via le nom de la classe
comme ceci:
NombrePremier.bool(nb);
puisque la méthode bool est statique donc tu n'es pas besoin de créer un nouveau objet de la classe NombrePremier.

@+
slt essai avec ceci ca marche

 public class Premier {
           //ici on crée 1 methode qui teste si 1 nombre a divise un nombre b
  public static boolean isDiviseur(int a,int b){
    
    if(a%b==0)return true;
    else return false;
    
   }
     // ici on calcule le nombre de diviseur du nombre a tester en utilisant 1 boucle for //avec i qui varie de 1 jusqu au nombre a a tester tout en faisant appelle a la 1er fonction

      public static int nbreDiviseur(int a){
    int i, comp=0;
    for(i=1;i<=a;i++){
     //apelle de la fonction isDiviseur son type de retour par defaut                               //est true
     if(isDiviseur(a,i))
     comp++;
     
    }
    return comp;
    }
  //ici tu as la fonction qui teste si ton nombre est 1er ou pas 
   public static  boolean isPremierA(int a){
    int b=nbreDiviseur(a);
//ici b represente le nombre de diviseur de a si de 1 jusqu a b b poss2de seulement 2 //diviseurs alors tu peut affirmer que b est premier
    if(b==2) return true;
    else return false;
  public static void main(String[] a){
    
    System.out.println("le nbre 17 est il premier :"+isPremierA(17));

System.out.println("le nbre 14 est il premier :"+isPremierA(14))  
}
}

essai ce code sur un editeur tu verra que ca marche.
Messages postés
16372
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
23 juillet 2021
2 858
Bonjour,

Le fait que ça fonctionne ne veut pas dire que c'est forcément correct...

Il ne faut jamais faire
if (condition) return true; else return false;
c'est une mauvaise compréhension des booléens (justement le thème de cette discussion), car x vaut déjà true ou false donc il faut faire directement
return x;
c'est plus court et nettement plus correct.

Ensuite ça ne sert à rien de systématiquement compter tout les diviseurs d'un nombre. Plus l'algorithme est court (s'arrête rapidement) mieux c'est. Ici, il suffit de trouver un seul diviseur pour déterminer que le nombre n'est pas premier, que ce soit avec 2, 3... ou 50 diviseurs peu importe.

Remarque : cette discussion a plus de 5 ans, je doute que la demande soit toujours d'actualité.