Skip to content
Snippets Groups Projects
Verified Commit cea14430 authored by orestis.malaspin's avatar orestis.malaspin
Browse files

added ppcm

parent ebff19a7
No related branches found
No related tags found
No related merge requests found
...@@ -37,9 +37,9 @@ int main() { ...@@ -37,9 +37,9 @@ int main() {
} }
} }
if (premier) { if (premier) {
printf("Le nombre %d est premier\n",nb); printf("Le nombre %d est premier\n", nb);
} else { } else {
printf("Le nombre %d n'est pas premier\n",nb); printf("Le nombre %d n'est pas premier\n", nb);
} }
return 0; return 0;
} }
...@@ -59,7 +59,7 @@ int main() { ...@@ -59,7 +59,7 @@ int main() {
- Initialisation, addition et multiplication de matrices - Initialisation, addition et multiplication de matrices
- Couverture de la reine - Couverture de la reine
# Le calcul du PPCM # Le calcul du PPCM (1/2)
## Définition ## Définition
...@@ -67,22 +67,63 @@ Le plus petit commun multiple (PPCM), `p`, de deux entiers non nuls, `a` et `b`, ...@@ -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 est le plus petit entier strictement positif qui soit multiple de ces deux
nombres. nombres.
## Comment décrire un programme/une fonction qui ferait ce calcul (arguments, Exemples:
sorties)?
```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 En `C` on pourrait le décrire comme
```C ```C
int ppcm(int a, int b); int ppcm(int a, int b); // La **signature** de cette fonction
``` ```
. . . . . .
## Algorithme ## 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 ```C
...@@ -92,18 +133,30 @@ Par groupe de 3, réfléchissez à ...@@ -92,18 +133,30 @@ Par groupe de 3, réfléchissez à
int main() { int main() {
int n = 15,m = 12; int n = 15,m = 12;
int i = 1; int i = 1;
while (n*i%m != 0) { while (n * i % m != 0) {
i++; i++;
} }
printf("Le ppcm de %d et %d est %d\n", n, m, n*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++) { --> # Le code du PPCM de 2 nombres (2/2)
<!-- if (n * i % m == 0) { -->
<!-- res = n*i; --> ## Corrigé alternatif
<!-- break; -->
<!-- } --> ```C
<!-- } --> #include <stdio.h>
<!-- printf("Le ppcm de %d et %d est %d\n",n,m,res); --> #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);
}
```
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment