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 standardscanf("%d", &number)lit une entrée entière de l'utilisateurprintf()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
forparcourt les nombres de 1 ànumber - 1 number % i == 0vérifie siiest un diviseur du nombresum += iajoute 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.



