Vérifier si un Nombre est Parfait en C

CBeginner
Pratiquer maintenant

Introduction

Dans ce laboratoire, vous apprendrez à écrire un programme C pour vérifier si un nombre donné est un nombre parfait. Le programme lira une entrée entière de l'utilisateur, calculera la somme de ses diviseurs propres, puis déterminera si le nombre est parfait ou non. Le laboratoire couvre les concepts fondamentaux de la théorie des nombres et des mathématiques discrètes, fournissant une application pratique de ces principes en programmation C.

Le programme invite d'abord l'utilisateur à entrer un entier positif, puis calcule la somme des diviseurs propres du nombre (c'est-à-dire tous les entiers positifs inférieurs au nombre qui divisent le nombre exactement). Enfin, le programme compare la somme des diviseurs propres au nombre original et affiche le résultat, indiquant si le nombre est parfait ou non.

Lecture d'un Entier

Dans cette étape, vous apprendrez à lire une entrée entière en C pour vérifier les nombres parfaits. Nous allons créer un programme C qui permet aux utilisateurs d'entrer un nombre à analyser.

Tout d'abord, créons un nouveau fichier C dans le répertoire du projet :

cd ~/project
nano perfect_number.c

Maintenant, ajoutez le code suivant au fichier :

#include <stdio.h>

int main() {
    int number;

    // Demander à l'utilisateur d'entrer un nombre
    printf("Entrez un entier positif pour vérifier s'il est un nombre parfait : ");
    scanf("%d", &number);

    // Afficher le nombre entré pour vérifier l'entrée
    printf("Vous avez entré : %d\n", number);

    return 0;
}

Exemple de sortie :

Entrez un entier positif pour vérifier s'il est un nombre parfait : 28
Vous avez entré : 28

Décomposons le code :

  • #include <stdio.h> inclut la bibliothèque d'entrée/sortie standard
  • scanf("%d", &number) lit une entrée entière de l'utilisateur
  • printf() est utilisé pour demander l'entrée et afficher le nombre entré

Compilez et exécutez le programme :

gcc perfect_number.c -o perfect_number
./perfect_number

Somme des diviseurs propres et comparaison au nombre

Dans cette étape, vous allez modifier le programme C précédent pour calculer la somme des diviseurs propres et déterminer si le nombre est parfait.

Ouvrez le fichier existant et mettez à jour le code :

nano ~/project/perfect_number.c

Remplacez le code précédent par :

#include <stdio.h>

int main() {
    int number, sum = 0;

    // Demander à l'utilisateur d'entrer un nombre
    printf("Entrez un entier positif pour vérifier s'il est un nombre parfait : ");
    scanf("%d", &number);

    // Calculer la somme des diviseurs propres
    for (int i = 1; i < number; i++) {
        if (number % i == 0) {
            sum += i;
        }
    }

    // Vérifier si le nombre est parfait
    if (sum == number) {
        printf("%d est un nombre parfait !\n", number);
    } else {
        printf("%d n'est pas un nombre parfait.\n", number);
    }

    return 0;
}

Compilez et exécutez le programme :

gcc perfect_number.c -o perfect_number
./perfect_number

Exemple de sortie pour un nombre parfait :

Entrez un entier positif pour vérifier s'il est un nombre parfait : 28
28 est un nombre parfait !

Exemple de sortie pour un nombre non parfait :

Entrez un entier positif pour vérifier s'il est un nombre parfait : 12
12 n'est pas un nombre parfait.

Concepts clés expliqués :

  • La boucle for parcourt les nombres de 1 à number - 1
  • number % i == 0 vérifie si i est un diviseur du nombre
  • sum += i ajoute tous les diviseurs propres
  • Un nombre parfait est un entier positif égal à la somme de ses diviseurs propres

Affichage du Résultat

Dans cette étape finale, vous améliorerez le programme pour fournir une sortie plus détaillée concernant le nombre parfait, incluant ses diviseurs et leur somme.

Ouvrez le fichier et mettez à jour le code :

nano ~/project/perfect_number.c

Remplacez le code précédent par :

#include <stdio.h>

int main() {
    int number, sum = 0;

    // Demander à l'utilisateur d'entrer un nombre
    printf("Entrez un entier positif pour vérifier s'il est un nombre parfait : ");
    scanf("%d", &number);

    // Afficher l'en-tête pour les diviseurs
    printf("Diviseurs propres de %d : ", number);

    // Calculer la somme des diviseurs propres et les afficher
    for (int i = 1; i < number; i++) {
        if (number % i == 0) {
            printf("%d ", i);
            sum += i;
        }
    }

    // Afficher le résultat détaillé
    printf("\n\nSomme des diviseurs propres : %d", sum);

    // Vérifier et afficher le statut de nombre parfait
    if (sum == number) {
        printf("\n%d est un NOMBRE PARFAIT !\n", number);
    } else {
        printf("\n%d n'est PAS un nombre parfait.\n", number);
    }

    return 0;
}

Compilez et exécutez le programme :

gcc perfect_number.c -o perfect_number
./perfect_number

Exemple de sortie pour un nombre parfait (28) :

Entrez un entier positif pour vérifier s'il est un nombre parfait : 28
Diviseurs propres de 28 : 1 2 4 7 14

Somme des diviseurs propres : 28
28 est un NOMBRE PARFAIT !

Exemple de sortie pour un nombre non parfait (12) :

Entrez un entier positif pour vérifier s'il est un nombre parfait : 12
Diviseurs propres de 12 : 1 2 3 4 6

Somme des diviseurs propres : 16
12 n'est PAS un nombre parfait.

Améliorations clés :

  • Affiche maintenant tous les diviseurs propres
  • Affiche la somme des diviseurs propres
  • Fournit une sortie claire et formatée
  • Maintient la logique de base de la détection des nombres parfaits

Résumé

Dans ce laboratoire, vous apprendrez à lire une entrée entière en C et à déterminer si un nombre est parfait. Tout d'abord, vous créerez un programme C qui invite l'utilisateur à saisir un entier positif. Ensuite, vous calculerez la somme des diviseurs propres du nombre et la comparerez au nombre original pour vérifier s'il s'agit d'un nombre parfait. Enfin, vous afficherez le résultat à la console.

Les points clés à retenir de ce laboratoire sont : la lecture d'une entrée entière à l'aide de scanf(), le calcul de la somme des diviseurs propres à l'aide d'une boucle for et la comparaison de la somme au nombre original pour déterminer s'il s'agit d'un nombre parfait.