Tom's Guide > Forum > Programmation > dire si le nombre n passé sur la ligne de commande est un nombre premier ou non

dire si le nombre n passé sur la ligne de commande est un nombre premier ou non

Forum Programmation : dire si le nombre n passé sur la ligne de commande est un nombre premier ou non

TomsGuide.com : 800 000 inscrits répondent à toutes vos questions high-tech et informatique. Pour obtenir de l'aide, inscrivez-vous gratuitement !
Mot :    Pseudo :           
 

Re coucou, cette fois-ci je pense avoir saisi comment faire mon devoir mais je m'y perds dans la syntaxe: Voilà mon code
public class Premier
{
public static void main(String[]args)
{
int n= Integer.parseInt(args[0]);
*/* là, je veux déclarer une variable I initialisée à 2*/*
variable r;
variable i;
i++;
r=n/i;
if(r est un décimal) return;
if(r==1);
System.out.println(args[0] " est un nombre premier" );
else
System.out.println(args[0] " n'est pas un nombre premier" + (i*r));
}
}

Vu sous cet angle ça doit écorcher les yeux mais bon, on fait ce qu'on peut. Je ne sais pas comment s'appelle l'instruction pour voir si un nombre est en entier ou un décimal et je ne suis pas du tout sur de ma boucle

si vous avez le temps de voir mes grosses erreurs...
merci

Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.

ORO :-o :-o :-o :-o :-o

Je pense que ton code marche lol

bon deja tu merites de sortir lol, je t ai filé un beau code sur la transformation d une chaine en entier et tu l utilises meme pas !!! Ici tu n as meme pas testé si y avait au moins un argument et tu ne gere pas l erreur NumberFormatException .... deja le programme commence tres mal (les exceptions cest PRIMORDIAL dans la programmation si tu veux pas les gerer laisses tomber alors :p)

:beuarf: :tusors:

Ensuite pour le code que tu as mis je doute que ca marche ^^

Deja je sais pas si tu es au courant, mais tous les nombres premiers ne sont pas encore trouvé et pour tous les calculé ca risque de mettre des millénaires...

Si en parametre je mets 10456678342346 je sais pas si ton pc va savoir si c est bon :) lol.
Ensuite, la valeur qui peut etre tapé peut etre plus longue qu'un type int :p qui est limité en valeur...

Ensuite je pense que ton algorithme est pas du tout au point ^^.
Deja il y a deux possibilités :

Soit tu donnes un tableau contenant une liste de nombre premiers et qu on verifiera en fonction de ca, soit tu devines au fur et a mesure si le nombre est premier.

La premiere solution est limitée puisque tu ne pourra definir que les nombres premiers qui sont dans ta liste et la seconde est lourde car il faut tout calculer.

La seconde est la plus seduisante, mais necessitera un code assez terrible avec l utilisation de thread pour faire la decouverte de nombre premier et l autre pour verifier :).

Mais bon a toi de voir...
La je fais un petit code chez moi vite fait et des qu il est pret je te le met...
et je ne le detaillerai pas autant que la derniere fois et je ne ferais pas un code avancé puisque au final tu n utilises pas ce qu on te dit....

(oui suis faché mais surtout c est une attitude a ne pas avoir surtout quand on programme !!!! les failles d un programme commence dans son code :p)

PS : je sais pas kan je le posterai vu ke je ne serais pas chez moi cet aprem voila voila :p

Répondre à Dunkel

Voila j ai fais un code rapide qui te permet de dire si le nombre saisie est un nombre premier et affiche en plus la liste de tous les nombres premiers jusqu a cette liste :

Note : j ai utilisé la collection Vector car c est la plus simple de toute, mais il en existe bien d autre ^^

Note 2 : faut revoir les maths :p car un nombre premier est défini par : "tout nombre premier est un nombre divisible par soi meme et par 1".

Note 3 : 1 n est pas un nombre premier car il n est divisible que par lui meme :p

Note 4 : j avance de 2 car tout nombre pair hormis 2 n est pas premier

Code :
  1. import java.util.Vector;
  2. public class Premier{
  3.     public static void main(String [] parametre){
  4.         if( parametre.length == 1 ){ // on regarde si un parametre est passé au programme
  5.             try{
  6.                                 // recuperation de la saisie
  7.                 int saisie = Integer.parseInt(parametre[0]);
  8.                 boolean saisiePremier = false; // flag indiquant si notre saisie est un nombre premier ou pas
  9.                 Vector liste = new Vector(); // liste des nombres premiers trouvés
  10.                 liste.add(""+2); // le premier nombre premier est 2
  11.                 for(int i =3; i <= saisie; i=i+2){
  12.                                         // on incremente de deux car les nombres pairs ne sont pas premiers
  13.                     boolean premier = true;
  14.                     for(int j = 0; j < liste.size(); j++){
  15.                         int temp = Integer.parseInt(liste.elementAt(j).toString());
  16.                         if( (i%temp) == 0 ){ // on regarde si le nombre est divisible par l element de la liste. le % traduit modulo
  17.                             premier = false;
  18.                             break; // on sort de la boucle
  19.                         }
  20.                     }
  21.                     if(premier){
  22.                         if( i == saisie )
  23.                             saisiePremier = true;
  24.                         liste.add(""+i);
  25.                     }
  26.                 }
  27.                 System.out.println("Voici la liste des nombres premiers jusqu à votre saisie :" );
  28.                 for(int i = 0; i < liste.size(); i++)
  29.                     System.out.print(liste.elementAt(i).toString()+";" );
  30.                 System.out.println("" );
  31.                 if( saisiePremier )
  32.                     System.out.println(saisie + " est un nombre premier" );
  33.                 else System.out.println(saisie + " n est pas un nombre premier" );
  34.             }
  35.             catch(NumberFormatException e)
  36.             {System.out.println("Le paramètre n'est pas une valeur entière...." );}
  37.         }
  38.         else System.out.println("Veuillez saisir 1 parametre de type entier" );
  39.     }
  40. }



Voila voila le code, j espere que cette fois tu tiendras compte de ce qu on te dit :p

:) donc n oublies pas de faire des controles sur ce qui est saisie !!! car si c est un truc a faire pour tes cours t inkiete... les profs cherchent a savoir ce qui marche pas et a faire planter le programme, car fait un programme qui marche dans le meilleur des cas, tout le monde sait le faire... en revanche, faire un programme qui ne plante pas....

Voila voila :)

Répondre à Dunkel

salut
tout d'abord je voudrais apporter quelques précisions sur ma situation: cela fait 2 mois que j'ai commencé la programmation java et je n'ai jamais fait aucun type d'autre programmation !!!!!!! je n'ai pas de professeur, je m'entraine à l'aide de livres spécialisés ( bref je fais ça par divertissement) je n'ai personne dans mon entourage qui sache comment faire pour allumer un PC ( j'exagère un peu mais bon c'est pour vous faire comprendre que je suis pas vraiment aidée) la plupart du temps j'"essaye" de comprendre ce qui à l'air si évident pour vous, le charabia comme "la collection Vector" pour l'instant je connais pas alors ne m'en veux pas si j'ai l'air de faire n'importe quoi, on fait cxe qu'on peut avec ce qu'on a

je suis quand mm d'accord quand on me dit " tu déconnes là..." mais je suis débutante et pas blonde alors un peu d'indulgence. J'avoue tout de mm que tu es plus indulgent que l'autre personne qui m'a répondu et que je comprends tes réponses et tes explications ( alors que je comprends pas grand chose à ce que m'a répondu l'autre internaute)
alors merci encore et bonne année

et puis si ça em..... les autres de répondre aux topics, ils n'ont qu'à sortir plus souvent de leurs trous et aller à la rencontre de la civilisation vivante et non pas informatique
lol ;-)

Répondre à monteiffel

lol je crois que tu m as pas tout a fait compris :) ca me derange pas de t aider loin de la et t inkiete je suis passé par ton etape... Mais y a une kestion que tu avais posé et je t avais fais un gros post avec a la reponse... tu m avais remercié... et la tu reposes une kestion SANS TENIR COMPTE DES CONSEILS que je t avais donné :).

Je ne critique pas le fait que tu n arrives pas a le faire ou que tu ne sais pas comment... on a tous debuter a un moment :) .
Ce ke je reproche c est que tu n es pas pris en compte ce qui t avait ete dis...

:)
voila voila :)

Répondre à Dunkel

Rebonjour,
Premièrement: je ne peux utiliser la collection Vector car je ne la connais pas( ou du moins je ne suis pas sensée la connaître) et du coup le code combinée à cette collection ne m'est que plus étrange lol
Deuxièmement: bien que ce soit plus facile et plus claire d'utiliser une liste des nombres premiers et de s'y référer, mon code doit plus s'approcher d'une boucle itérative avec un compteur de boucle car il faut que cette application dise si le nombre passé est un nombre premier et s'il n'est pas un nombre premier, elle doit afficher pourquoi. Par exemple, 91 n'est pas un nombre premier car ( 7*13 =91)


voilà,voilà j'aurai envie de dire pourquoi faire simple quand on peut faire compliqué :-D

Répondre à monteiffel
Tom's Guide > Forum > Programmation > dire si le nombre n passé sur la ligne de commande est un nombre premier ou non
Aller à :

Il y a 879 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Attention

Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois.
Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.

Répondre Annuler
Liens