diff --git a/slides/cours_2.md b/slides/cours_2.md index 8caf45103a8aab7dfd018490109fd3fef99d9931..1180dbb8211aa15e779a1b894728044d37e32c52 100644 --- a/slides/cours_2.md +++ b/slides/cours_2.md @@ -37,9 +37,9 @@ int main() { } } if (premier) { - printf("Le nombre %d est premier\n",nb); + printf("Le nombre %d est premier\n", nb); } else { - printf("Le nombre %d n'est pas premier\n",nb); + printf("Le nombre %d n'est pas premier\n", nb); } return 0; } @@ -59,7 +59,7 @@ int main() { - Initialisation, addition et multiplication de matrices - Couverture de la reine -# Le calcul du PPCM +# Le calcul du PPCM (1/2) ## Définition @@ -67,22 +67,63 @@ Le plus petit commun multiple (PPCM), `p`, de deux entiers non nuls, `a` et `b`, est le plus petit entier strictement positif qui soit multiple de ces deux nombres. -## Comment décrire un programme/une fonction qui ferait ce calcul (arguments, -sorties)? +Exemples: + +```bash +PPCM(3, 4) = 12, +PPCM(4, 6) = 12, +PPCM(5, 15) = 15. +``` + +## Comment décrire une fonction qui ferait ce calcul (arguments, sorties)? . . . En `C` on pourrait le décrire comme ```C -int ppcm(int a, int b); +int ppcm(int a, int b); // La **signature** de cette fonction ``` . . . ## Algorithme -Par groupe de 3, réfléchissez à +Par groupe de 3: + +* réfléchissez à un algorithme donnant le PPCM de deux nombres; +* écrivez l'algorithme en pseudo-code. + +# Le calcul du PPCM (1/2) + +Si un nombre, `p`, est multiple de `a` et de `b` alors il peut s'écrire `p = a +* i = b * j` ou encore `p / a = i` et `p / b = j`. + +<!-- Si un nombre, $p$, est multiple de $a$ et de $b$ alors il peut s'écrire --> +<!-- $$ --> +<!-- p = a \cdot i = b \cdot j, --> +<!-- $$ --> +<!-- ou encore $p / a = i$ et $p / b = j$. --> + +## Pseudo-code + +```C +int ppcm(int a, int b) { + for (i in [1, b]) { + if a * i is divisible by b { + return a * i + } + } +} +``` + +# Le code du PPCM de 2 nombres (1/2) + +## Implémentez le pseudo-code et postez le code sur matrix. + +. . . + +## Un corrigé possible ```C @@ -92,18 +133,30 @@ Par groupe de 3, réfléchissez à int main() { int n = 15,m = 12; int i = 1; - while (n*i%m != 0) { + while (n * i % m != 0) { i++; } printf("Le ppcm de %d et %d est %d\n", n, m, n*i); } ``` -<!-- int res = n*m; --> -<!-- for (int i = 2; i <= m; i++) { --> -<!-- if (n * i % m == 0) { --> -<!-- res = n*i; --> -<!-- break; --> -<!-- } --> -<!-- } --> -<!-- printf("Le ppcm de %d et %d est %d\n",n,m,res); --> - + +# Le code du PPCM de 2 nombres (2/2) + +## Corrigé alternatif + +```C +#include <stdio.h> +#include <stdlib.h> + +int main() { + int res = n*m; + for (int i = 2; i <= m; i++) { + if (n * i % m == 0) { + res = n * i; + break; + } + } + printf("Le ppcm de %d et %d est %d\n", n, m, res); +} +``` +