Introduction
Dans ce laboratoire, nous apprendrons à vérifier si un nombre est premier en programmation C. Le laboratoire se compose de trois étapes : la lecture d'une entrée entière de l'utilisateur, le test de la divisibilité de 2 à la racine carrée du nombre, et l'impression de l'indication si le nombre est premier ou non. À la fin de ce laboratoire, vous aurez un programme fonctionnel capable de déterminer la primalité d'un entier donné.
Le laboratoire commence par enseigner la lecture d'une entrée entière de l'utilisateur à l'aide de la fonction scanf(). Ensuite, il présente l'algorithme de vérification des nombres premiers, qui implique le test de la divisibilité de 2 à la racine carrée du nombre d'entrée. Si aucun diviseur n'est trouvé, le nombre est considéré comme premier. Enfin, le programme affiche le résultat, indiquant si le nombre est premier ou non.
Lecture d'un Entier
Dans cette étape, nous allons apprendre à lire une entrée entière de l'utilisateur en programmation C. Ceci est la première étape de la création d'un vérificateur de nombres premiers.
Tout d'abord, créons un nouveau fichier C pour notre programme de vérification des nombres premiers :
cd ~/project
nano prime_checker.c
Maintenant, écrivons le code pour lire un entier :
#include <stdio.h>
int main() {
int number;
printf("Entrez un entier positif pour vérifier s'il est premier : ");
scanf("%d", &number);
printf("Vous avez entré : %d\n", number);
return 0;
}
Exemple de sortie :
Entrez un entier positif pour vérifier s'il est premier : 17
Vous avez entré : 17
Décomposons le code :
#include <stdio.h>inclut la bibliothèque d'entrée/sortie standardint main()est la fonction principale où l'exécution du programme commenceint number;déclare une variable entière pour stocker l'entrée utilisateurprintf()affiche une invite à l'utilisateurscanf()lit une entrée entière de l'utilisateur et la stocke dansnumberprintf()confirme le nombre entré par l'utilisateur
Compilons et exécutons le programme :
gcc prime_checker.c -o prime_checker
./prime_checker
Tester la Divisibilité de 2 à √n
Dans cette étape, nous implémenterons l'algorithme de vérification des nombres premiers en testant la divisibilité de 2 à la racine carrée du nombre d'entrée.
Modifions notre précédent programme C pour ajouter la logique de vérification des nombres premiers :
nano ~/project/prime_checker.c
Mettre à jour le code avec le test de divisibilité :
#include <stdio.h>
#include <math.h>
int is_prime(int number) {
// Les nombres inférieurs à 2 ne sont pas premiers
if (number < 2) {
return 0;
}
// Vérifier la divisibilité de 2 à la racine carrée du nombre
for (int i = 2; i <= sqrt(number); i++) {
if (number % i == 0) {
return 0; // Non premier s'il est divisible
}
}
return 1; // Premier s'il n'y a pas de diviseurs trouvés
}
int main() {
int number;
printf("Entrez un entier positif pour vérifier s'il est premier : ");
scanf("%d", &number);
if (is_prime(number)) {
printf("%d est un nombre premier.\n", number);
} else {
printf("%d n'est pas un nombre premier.\n", number);
}
return 0;
}
Compiler le programme avec la bibliothèque mathématique :
gcc ~/project/prime_checker.c -o ~/project/prime_checker -lm
Exemples de sorties :
Entrez un entier positif pour vérifier s'il est premier : 17
17 est un nombre premier.
Entrez un entier positif pour vérifier s'il est premier : 20
20 n'est pas un nombre premier.
Points clés de l'implémentation :
- La fonction
sqrt()de<math.h>calcule la racine carrée - Nous vérifions uniquement la divisibilité jusqu'à √n pour optimiser l'algorithme
- Si aucun diviseur n'est trouvé, le nombre est premier
- L'opérateur modulo
%vérifie la divisibilité - Nous retournons 0 pour les nombres non premiers, 1 pour les nombres premiers
Afficher si Premier ou Non
Dans cette dernière étape, nous améliorerons notre programme de vérification des nombres premiers en ajoutant une sortie plus détaillée et en permettant de vérifier plusieurs nombres.
Modifions le programme pour fournir une sortie plus complète :
nano ~/project/prime_checker.c
Mettre à jour le code avec une interface améliorée :
#include <stdio.h>
#include <math.h>
int is_prime(int number) {
// Les nombres inférieurs à 2 ne sont pas premiers
if (number < 2) {
return 0;
}
// Vérifier la divisibilité de 2 à la racine carrée du nombre
for (int i = 2; i <= sqrt(number); i++) {
if (number % i == 0) {
return 0; // Non premier s'il est divisible
}
}
return 1; // Premier s'il n'y a pas de diviseurs trouvés
}
void print_prime_details(int number) {
if (is_prime(number)) {
printf("%d est un NOMBRE PREMIER !\n", number);
printf("Explication :\n");
printf("- Il est seulement divisible par 1 et lui-même\n");
printf("- Aucun autre diviseur n'a été trouvé entre 2 et √%d\n", number);
} else {
printf("%d n'est PAS un nombre premier.\n", number);
// Trouver et afficher le plus petit diviseur
for (int i = 2; i <= sqrt(number); i++) {
if (number % i == 0) {
printf("Explication :\n");
printf("- Divisible par %d\n", i);
printf("- %d × %d = %d\n", i, number / i, number);
break;
}
}
}
}
int main() {
int number, continue_check;
do {
printf("Entrez un entier positif pour vérifier s'il est premier : ");
scanf("%d", &number);
print_prime_details(number);
printf("\nSouhaitez-vous vérifier un autre nombre ? (1=Oui, 0=Non) : ");
scanf("%d", &continue_check);
} while (continue_check == 1);
printf("Merci d'avoir utilisé le Vérificateur de nombres premiers !\n");
return 0;
}
Compiler le programme :
gcc ~/project/prime_checker.c -o ~/project/prime_checker -lm
Exemples de sorties :
Entrez un entier positif pour vérifier s'il est premier : 17
17 est un NOMBRE PREMIER !
Explication :
- Il est seulement divisible par 1 et lui-même
- Aucun autre diviseur n'a été trouvé entre 2 et √17
Souhaitez-vous vérifier un autre nombre ? (1=Oui, 0=Non) : 1
Entrez un entier positif pour vérifier s'il est premier : 20
20 n'est PAS un nombre premier.
Explication :
- Divisible par 2
- 2 × 10 = 20
Souhaitez-vous vérifier un autre nombre ? (1=Oui, 0=Non) : 0
Merci d'avoir utilisé le Vérificateur de nombres premiers !
Améliorations clés :
- Ajout d'explications détaillées pour les nombres premiers et non premiers
- Implémentation d'une boucle pour permettre de vérifier plusieurs nombres
- Fournit une sortie plus pédagogique sur les propriétés des nombres
Résumé
Dans ce laboratoire, nous avons appris à lire une entrée entière de l'utilisateur en programmation C, ce qui est la première étape de la création d'un vérificateur de nombres premiers. Nous avons ensuite implémenté l'algorithme de vérification des nombres premiers en testant la divisibilité de 2 à la racine carrée du nombre d'entrée. Le programme vérifie si un nombre donné est premier en itérant sur les nombres de 2 à la racine carrée du nombre et en vérifiant si l'un d'eux divise le nombre uniformément. Si aucun diviseur n'est trouvé, le nombre est considéré comme premier.



