[Java] selectionner le premier nombre > 0

Fermé
evan... Messages postés 46 Date d'inscription vendredi 7 mai 2010 Statut Membre Dernière intervention 14 mars 2012 - 14 mars 2012 à 12:57
KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 - 14 mars 2012 à 13:40
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 :

	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 !


A voir également:

1 réponse

KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 3 018
Modifié par KX le 14/03/2012 à 13:42
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
0