Salut, j'ai essayé de modifier le moins possible ton listing, mais
j'ai quand même rajouté une variable.
le problème, c'est que quand un nombre est divisible, pas la peine d'insister. Par contre, quand on a fini la boucle et qu'il ne s'est pas montré divisible (par autre chose que 1 et lui même), cela ne fait qu'un seul nombre premier. Donc son affichage doit être en dehors de la boucle de vérification (qu'un nombre est premier)
#include <stdio.h>
#include <stdlib.h>
int main()
{
int v[100]; /*vecteur contenant les nombres*/
int j; /*compteur des nombres du vecteur*/
int i; /*position des nombres dans le vecteur*/
int cpt=0; /*compteur des nombres premiers*/
bool premier; /* témoin de nombre premier */
for(i=0; i<100; i++)
/*entrée des valeurs de 0 à 100 dans le
vecteur + affichage du vecteur*/
{
v[i]=i;
printf("%4d",v[i]);
}
printf("\n\n\n");
for(i=0; i<100; i++)
{
/* je sais que c'est bizzare mais il faut bien rentrer dans la boucle*/
premier=true;
for(j=2; j<v[i] && premier== true; j++)/*tant que premier et que pas tout vu*/
{
if((v[i]%j)==0) /*si un nombre "v[i]" est divisible par un
des nombres "j" qui le précède,*/
{
premier=false;
/*seule la détection d'un nombre non premier fait sortir de la boucle*/
}
}
/**/
if(premier==true)
{
cpt++; /*alors il n'est pas premier*/
printf("%4d",v[i]); /*on affiche les nombres premiers*/
}
}
printf("\n\nIl y a %d nombre(s) premier(s).",cpt); /*on affiche
le nombre de nombres premiers*/
printf("\n\n\n");
system("pause");
}
cordialement
¤