public class NombrePremier{
public boolean isPremier(int nombre){
int ct=0;
for(int i=1;i<=nb;i++){
if( nb % i == 0){
//incrémente le nombre de facteur pour ce nombre
ct=ct+1;
}
}
// le nombre est primier si on a 2 facteurs: 1 et soit même.
return (ct==2);
}
}
public static void main(String[] args) {
int nb;
for(nb=1;nb<=10;nb++){
if (isPremier(nb)){
System.out.println(nb+" est Premier");
}
}
J’ai un peu tout tranformé à cause de quelques règles de base:
nommage: utiliser une majuscule pour le nom de Classe, et de préférence des noms entiers et signifiants
découpage: découper au maximum en fonction pour limiter les impact d’un morceau de code sur un autre, et aussi pour la lisibilité: là ça permet de corriger le code: il faut initialiser ct pour chaque nombre (on calcule le nombre de fateur pour chaque nombre)
il resterai 2-3 autre choses à faire:
-le static: il faut instancier un objet et travailler de préférence dans les instances pour ne plus avoir à utiliser le “static”
-optimisation: l’algo n’est pas optimal pour calculer les nombres premiers mais bon…
pour vos reponces,:mai ce que je veu savoire pour koi mon code marche pas ??:heink:
je pence que un nombre premier c est un nombre divisable sur lui meme et 1 pa plus :paf:
mon idé etai de fixé un element et faire la division sur les autres elements; si le rest d une division d un element sur les autres egale 0 2 fois pa plus ni moins je l affiche :sol:
mai le blém c est qu il maffiche rien ??
1- Ton problème est dans la variable ct : tu la fais bien “monter”, mais jamais tu ne la remets à zero pour le test suivant, donc peu de chance que tu retombes sur la valeur 2
2- Pour être sûr que ton affichage fonctionne, fais lui afficher quelque chose (autre chose) si la condition n’est pas respectée (tu effaceras cette ligne après)
mnt ça marche merci gcc :jap:
j ai regler le probléme on initialise chaque fois le conteure ct avant de faire la division :icon_biggrin:
public class fact {
public static void main(String[] args) {
int i,nb;
for(nb=1;nb<=100;nb++){
int ct=0;
for(i=1;i<=nb;i++){
if( nb % i == 0)
ct=ct+1;
}
if(ct==2)
System.out.println(nb);
}
}