1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
import java.util.Scanner; class PGDC { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("Calcul du plus grand diviseur commun de deux nombres entiers positifs."); // Entrée des données System.out.print("Entrez un nombre positif : "); int nb1 = scanner.nextInt(); System.out.print("Entrez un nombre positif : "); int nb2 = scanner.nextInt(); /* * A chaque passage de la boucle while, on modifie le plus grand * de a et b en déduisant le nombre plus petit, comme indiqué par * la formule d'Euclide. La boucle se terminera quand a et b sont * égaux (au pire des cas quand ils valent 1). A ce moment-là, on * retourne la valeur de a (on aurait aussi pu retourner b). */ int a = nb1; int b = nb2; while (a != b) { if (a > b) { a = a - b; } else { b = b - a; } } System.out.println("Le plus grand diviseur commun de " + nb1 + " et " + nb2 + " est " + a); scanner.close(); } } |
Il existe une solution dite récursive du calcul du PGDC un peu plus intuitive à écrire.
Nous verrons la récursion en fin de semestre.