Dans le programme, une boucle while est utilisée pour trouver les 100 premiers nombres premiers. Bien que l'on sache que l'on veut aller jusqu'à ce que compteur soit égal à 100, l'utilisation d'une boucle while est appropriée dans ce contexte pour plusieurs raisons. Voici pourquoi :
Explication :
-
Condition de terminaison basée sur le compteur :
- La boucle
while continue tant que compteur est inférieur à 100. Cela signifie que la boucle s'exécutera jusqu'à ce que 100 nombres premiers aient été trouvés.
- Une boucle
for est généralement utilisée lorsque le nombre d'itérations est connu à l'avance. Dans ce cas, nous ne savons pas à l'avance combien de nombres nous devons vérifier pour trouver 100 nombres premiers.
-
Incrémentation conditionnelle :
- À chaque itération, le programme vérifie si le nombre actuel est premier. Si c'est le cas, le compteur est incrémenté.
- Si une boucle
for était utilisée avec une condition basée sur compteur, il serait plus complexe de gérer l'incrémentation conditionnelle du compteur.
-
Simplicité et lisibilité :
- La boucle
while rend le code plus lisible et plus simple à comprendre. La condition compteur < 100 est directement liée à l'objectif de trouver 100 nombres premiers.
- Une boucle
for nécessiterait une gestion plus complexe de l'incrémentation du compteur et de la vérification des nombres premiers.
Code avec commentaires :
int main() {
int compteur = 0; // Compteur pour le nombre de nombres premiers trouvés
int nombre = 2; // Le premier nombre à vérifier
printf("Les 100 premiers nombres premiers sont :\n");
while (compteur < 100) { // Continuer jusqu'à ce que 100 nombres premiers soient trouvés
if (estPremier(nombre)) { // Vérifier si le nombre est premier
printf("%d ", nombre); // Afficher le nombre premier
compteur++; // Incrémenter le compteur
}
nombre++; // Passer au nombre suivant
}
return 0;
}
Comparaison avec une boucle for :
Si l'on essayait d'utiliser une boucle for, cela pourrait ressembler à ceci :
int main() {
int compteur = 0;
int nombre = 2;
printf("Les 100 premiers nombres premiers sont :\n");
for (; compteur < 100; nombre++) {
if (estPremier(nombre)) {
printf("%d ", nombre);
compteur++;
}
}
return 0;
}
Cependant, cette version avec une boucle for est moins intuitive et peut prêter à confusion, car la condition de terminaison (compteur < 100) et l'incrémentation (nombre++) ne sont pas directement liées dans la déclaration de la boucle.
En résumé, l'utilisation d'une boucle while dans ce contexte est plus appropriée car elle permet de gérer facilement la condition de terminaison basée sur le compteur de nombres premiers trouvés, tout en maintenant la simplicité et la lisibilité du code.