From bc8e577434350331cc8a8b6a55e8729c4492a07b Mon Sep 17 00:00:00 2001 From: Orestis <orestis.malaspinas@pm.me> Date: Thu, 4 Nov 2021 23:01:06 +0100 Subject: [PATCH] updated ppcm --- slides/cours_7.md | 44 +++++++++++++++++++++++++++++++------------- 1 file changed, 31 insertions(+), 13 deletions(-) diff --git a/slides/cours_7.md b/slides/cours_7.md index 0f00fe8..9f3a940 100644 --- a/slides/cours_7.md +++ b/slides/cours_7.md @@ -259,7 +259,27 @@ $$ $$ * En moyenne, $\mathcal{O}(N^2)$ ($N^2/2$ comparaisons). -# L'algorithme du PPCM *récursif* (1/2) +# L'algorithme du PPCM *récursif* (1/3) + +## Exemple d'algorithme pour le calcul + +```C +PPCM(36, 90): +36 < 90 // 36 + 36 +72 < 90 // 72 + 36 +108 > 90 // 90 + 90 +108 < 180 // 108 + 36 +144 < 180 // 144 + 36 +180 = 180 // The End! +``` + +. . . + +* On incrémente de 36 à gauche et de 90 à droite jusqu'à ce que les deux + soient égaux. + + +# L'algorithme du PPCM *récursif* (2/3) ## Rappel de l'algorithme @@ -283,17 +303,15 @@ int ppcm(int m, int n) { ## Écrire l'algorithme *récursif* du PPCM (matrix) -# L'algorithme du PPCM *récursif* (1/2) +# L'algorithme du PPCM *récursif* (3/3) -```C -int ppcm(int mult_n, int mult_m, int n, int m) { - if (mult_n < mult_m) { - return ppcm(n + mult_n, mult_m, n, m); - } else if (mult_n > mult_m) { - return ppcm(mult_n, m + mult_m, n, m); - } else { - return mult_n; - } -} -``` +## Pseudo-code + +- Algorithme du PPCM de deux nombres `n` et `m` + - `ppcm(mult_n,mult_m) = ppcm(mult_n + n, mult_m)` + si `mult_n < mult_m` (récursivité) + - `ppcm(mult_n,mult_m) = ppcm(mult_n, mult_m + m)` + si `mult_n > mult_m` (récursivité) + - `ppcm(mult_n,mult_m) = mult_n` + si `mult_n = mult_m` (condition d’arrêt) -- GitLab