[Java] selectionner le premier nombre > 0
evan...
Messages postés
59
Statut
Membre
-
KX Messages postés 19031 Statut Modérateur -
KX Messages postés 19031 Statut Modérateur -
Bonjour,
Je développe un petit programme qui calcule le PGCD de deux nombres, pour le collège.
Cependant j'ai un petit problème, comment je peux sélectionner le premier nombre (reste) au dessus de 0 dans la boucle de cette fonction :
Je suis sûr que la solution est toute simple mais je ne la trouve pas.
Merci d'avance pour vos solution !
Je développe un petit programme qui calcule le PGCD de deux nombres, pour le collège.
Cependant j'ai un petit problème, comment je peux sélectionner le premier nombre (reste) au dessus de 0 dans la boucle de cette fonction :
public static int calcul(int dividende, int diviseur, int quotient, int reste) {
while(reste > 0) {
dividende = diviseur;
diviseur = reste;
quotient = dividende / diviseur;
reste = dividende % diviseur;
}
return reste;
}
Je suis sûr que la solution est toute simple mais je ne la trouve pas.
Merci d'avance pour vos solution !
1 réponse
-
Si le dernier reste est nul, alors l'avant dernier reste c'est le dernier dividende.
Remarque : normalement tu n'as pas à passer quotient et reste en paramètre de la méthode, ils devraient être déclarés à l'intérieur (sachant que quotient ne sert à rien ici). De plus, il serait préférable d'utiliser une boucle do while qui s'adapte mieux à ce genre de cas où il faut faire au moins un tour.
public static int calcul(int dividende, int diviseur) { //int quotient; int reste; do { //quotient = dividende / diviseur; reste = dividende % diviseur; dividende = diviseur; diviseur = reste; } while (reste>0); return dividende; }
Remarque : Il existe également des méthodes de programmation dite récursives qui sont encore plus simple pour des algorithmes comme ça :
public static long pgcd(long a, long b) { return b==0 ? a : pgcd(b,a%b); }La confiance n'exclut pas le contrôle