[Java] selectionner le premier nombre > 0

evan... Messages postés 59 Statut Membre -  
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 :

	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

  1. KX Messages postés 19031 Statut Modérateur 3 020
     
    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