Calculer le Plus Petit Multiple Commun (PPCM) en C

CBeginner
Pratiquer maintenant

Introduction

Dans ce laboratoire, vous apprendrez à trouver le Plus Petit Multiple Commun (PPCM) de deux entiers en utilisant le langage C. Le laboratoire couvre le processus étape par étape, en commençant par la lecture de deux entiers à partir de l'entrée utilisateur, puis en implémentant la formule PPCM = (a*b)/PGCD(a,b) pour calculer le PPCM, et enfin en imprimant le résultat. À la fin de ce laboratoire, vous aurez une compréhension solide de la manière d'appliquer les concepts de théorie des nombres, tels que l'algorithme d'Euclide pour trouver le Plus Grand Commun Diviseur (PGCD), pour résoudre des problèmes pratiques en C.

Lecture de deux entiers

Dans cette étape, vous apprendrez à lire deux entiers à partir de l'entrée utilisateur en programmation C, ce qui est la première étape du calcul du Plus Petit Multiple Commun (PPCM).

Tout d'abord, créons un nouveau fichier C pour notre programme PPCM :

cd ~/project
nano lcm.c

Maintenant, ajoutez le code suivant pour lire deux entiers :

#include <stdio.h>

int main() {
    int a, b;

    printf("Entrez deux entiers positifs :\n");
    printf("Premier nombre : ");
    scanf("%d", &a);

    printf("Second nombre : ");
    scanf("%d", &b);

    printf("Vous avez entré : %d et %d\n", a, b);

    return 0;
}

Compilez et exécutez le programme :

gcc lcm.c -o lcm
./lcm

Exemple de sortie :

Entrez deux entiers positifs :
Premier nombre : 12
Second nombre : 18
Vous avez entré : 12 et 18

Décomposons le code :

  • La fonction scanf() est utilisée pour lire l'entrée entière de l'utilisateur.
  • Le spécificateur de format %d est utilisé pour l'entrée entière.
  • &a et &b transmettent les adresses mémoire où les valeurs d'entrée seront stockées.

Utilisation de PPCM = (a*b)/PGCD(a,b)

Dans cette étape, vous implémenterez le calcul du Plus Petit Multiple Commun (PPCM) en utilisant la formule PPCM(a,b) = (a*b)/PGCD(a,b). Nous allons d'abord créer une fonction pour calculer le Plus Grand Commun Diviseur (PGCD) à l'aide de l'algorithme d'Euclide.

Mettez à jour le fichier lcm.c avec le code suivant :

#include <stdio.h>

// Fonction pour calculer le PGCD à l'aide de l'algorithme d'Euclide
int calculateGCD(int a, int b) {
    while (b != 0) {
        int temp = b;
        b = a % b;
        a = temp;
    }
    return a;
}

// Fonction pour calculer le PPCM
int calculateLCM(int a, int b) {
    return (a * b) / calculateGCD(a, b);
}

int main() {
    int a, b, ppcm;

    printf("Entrez deux entiers positifs :\n");
    printf("Premier nombre : ");
    scanf("%d", &a);

    printf("Second nombre : ");
    scanf("%d", &b);

    ppcm = calculateLCM(a, b);

    printf("Le Plus Petit Multiple Commun de %d et %d est : %d\n", a, b, ppcm);

    return 0;
}

Compilez et exécutez le programme :

gcc lcm.c -o lcm
./lcm

Exemple de sortie :

Entrez deux entiers positifs :
Premier nombre : 12
Second nombre : 18
Le Plus Petit Multiple Commun de 12 et 18 est : 36

Décomposons les composants clés :

  • calculateGCD() implémente l'algorithme d'Euclide pour trouver le Plus Grand Commun Diviseur.
  • calculateLCM() utilise la formule PPCM(a,b) = (a*b)/PGCD(a,b).
  • L'algorithme d'Euclide trouve efficacement le PGCD en calculant les restes successivement.

Affichage du PPCM

Dans cette dernière étape, vous exécuterez le programme PPCM et vérifierez sa sortie pour différentes combinaisons d'entrées. Nous testerons le programme avec différentes paires d'entiers pour démontrer le calcul du PPCM.

Compilez le programme (si ce n'est pas déjà fait) :

cd ~/project
gcc lcm.c -o lcm

Exécutez le programme avec différentes combinaisons d'entrées :

./lcm << EOF
12
18
EOF

Exemple de sortie pour 12 et 18 :

Entrez deux entiers positifs :
Premier nombre : 12
Second nombre : 18
Le Plus Petit Multiple Commun de 12 et 18 est : 36

Essayons un autre exemple :

./lcm << EOF
15
25
EOF

Exemple de sortie pour 15 et 25 :

Entrez deux entiers positifs :
Premier nombre : 15
Second nombre : 25
Le Plus Petit Multiple Commun de 15 et 25 est : 75

Points clés à comprendre :

  • Le PPCM est le plus petit entier positif divisible par les deux nombres d'entrée.
  • Pour 12 et 18, le PPCM est 36.
  • Pour 15 et 25, le PPCM est 75.
  • Le programme utilise la formule PPCM(a,b) = (a*b)/PGCD(a,b).

Pour rendre le programme plus robuste, vous pouvez ajouter une validation des entrées :

nano lcm.c

Mettez à jour la fonction main() pour inclure la validation des entrées :

int main() {
    int a, b, ppcm;

    printf("Entrez deux entiers positifs :\n");
    printf("Premier nombre : ");
    scanf("%d", &a);

    printf("Second nombre : ");
    scanf("%d", &b);

    // Validation des entrées
    if (a <= 0 || b <= 0) {
        printf("Erreur : Veuillez entrer uniquement des entiers positifs.\n");
        return 1;
    }

    ppcm = calculateLCM(a, b);

    printf("Le Plus Petit Multiple Commun de %d et %d est : %d\n", a, b, ppcm);

    return 0;
}

Recompiler et tester le programme mis à jour :

gcc lcm.c -o lcm
./lcm

Résumé

Dans ce laboratoire, vous apprendrez à trouver le Plus Petit Multiple Commun (PPCM) de deux entiers en programmation C. Tout d'abord, vous lirez deux entiers à partir de l'entrée utilisateur. Ensuite, vous implémenterez la formule PPCM(a,b) = (a*b)/PGCD(a,b) en créant une fonction pour calculer le Plus Grand Commun Diviseur (PGCD) à l'aide de l'algorithme d'Euclide. Enfin, vous afficherez le PPCM calculé.

Les points clés à retenir sont : la lecture d'entrées entières à l'aide de scanf(), l'implémentation de l'algorithme d'Euclide pour trouver le PGCD et l'utilisation de la formule pour calculer le PPCM. À la fin de ce laboratoire, vous aurez une bonne compréhension de la façon de trouver le PPCM de deux nombres en C.