Afficher tous les nombres premiers
Dans cette étape, vous terminerez l'implémentation du crible d'Ératosthène en affichant tous les nombres premiers trouvés dans la plage donnée.
Modifions le fichier prime_sieve.c
pour ajouter la fonctionnalité d'affichage :
cd ~/projet
nano prime_sieve.c
Mettez à jour le code pour afficher les nombres premiers :
#include <stdio.h>
#include <stdbool.h>
int main() {
int upper_limit;
printf("Entrez la limite supérieure pour trouver les nombres premiers : ");
scanf("%d", &upper_limit);
// Créez un tableau booléen pour marquer les nombres premiers et non premiers
bool is_prime[upper_limit + 1];
// Initialisez tous les nombres comme premiers
for (int i = 2; i <= upper_limit; i++) {
is_prime[i] = true;
}
// Marquez les multiples de chaque nombre premier comme non premiers
for (int p = 2; p * p <= upper_limit; p++) {
if (is_prime[p]) {
// Marquez les multiples de p comme non premiers
for (int i = p * p; i <= upper_limit; i += p) {
is_prime[i] = false;
}
}
}
// Affichez tous les nombres premiers
printf("Les nombres premiers jusqu'à %d sont :\n", upper_limit);
for (int p = 2; p <= upper_limit; p++) {
if (is_prime[p]) {
printf("%d ", p);
}
}
printf("\n");
return 0;
}
Compilez et exécutez le programme :
gcc prime_sieve.c -o prime_sieve
./prime_sieve
Sortie exemple :
Entrez la limite supérieure pour trouver les nombres premiers : 50
Les nombres premiers jusqu'à 50 sont :
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47
Analysons les dernières étapes :
- Après avoir marqué les multiples, nous parcourons le tableau
is_prime
- Nous affichons seulement les nombres qui restent marqués comme premiers
- La sortie montre tous les nombres premiers jusqu'à la limite spécifiée par l'utilisateur