Un entier premier

je dois faire un code qui accepte deux nombre premier,j'ai fais ce code:
 #include<stdio.h>
 #include<conio.h>
 #include<math.h>

void premier(int nb)
 {int i;
  int a;    //en fait c'est un booleen soit 1 soit 0,utile pour le "do while"
 scanf("%d",&nb);
  do
   {
    for (i=2;i<nb;i++)
     if((nb%i)== 0)
     {
       printf("non premier,entrez de nouveau :\n");
       scanf ("%d",&nb) ;
       a=1;
     }
     else
     a=0;
   }
   while((a==0)||(i==(nb-1)));
 }
void main()
 {int p,q;
premier(p);
premier(q);
getch();
}

je veux savoir qu'est ce qu'il ne va pas,bon lors de la compilation,il n'ya pas d'erreur,c'est executable mais pas correct,ou est l'erreur??????!!!!!!!
Configuration: Windows Vista Internet Explorer 8.0

2 réponses

  1. Ce qui ne va surtout pas, c'est la manière dont tu passes le paramètre du 'main' à la fonction 'premier'.
    Passer la valeur de ton paramètre, fait que sa valeur ne sera pas changée.
    Passer l'adresse de ton paramètre, fait que cette adresse ne sera pas changée (l'adresse étant une valeur comme une autre!)... par contre le contenu de cette adresse pourra être changé par la fonction et ce changement sera 'visible' par l'appelant.. Il faut ainsi modifier ton programme (j'ai 'ajouté' quelques simplifications):
    #include <stdio.h>
    #include <stdlib.h>
    
    void premier(int* nb)
    {
      int i;
      printf("Entrez un nombre premier: ");
      while(1)
      {
        scanf ("%d", nb) ;
        for (i=2; i<*nb; i++)
          if ((*nb%i) == 0)
            break;
        if (i == *nb)
          break;
        printf("\nNon premier,entrez de nouveau: ");
      }
    }
    
    int main(void)
    {
      int p,q;
      premier(&p);
      premier(&q);
      printf ("p=%d q=%d\n", p, q);
    
      return (EXIT_SUCCESS);
    }
    Bonne continuation.
    1. Modérateur
      Bonjour,*

      S'il vous plaît
      Merci
      Au revoir
      etc.
      Sont monnaie courante quand on veut obtenir quelque chose !

      Saine lecture...
      A voir aussi

      Merci de votre compréhension.

      ;-)

      * Ne pas en tenir compte si présent dans le message initial, mais bon vu qu'il est ajouté automatiquement, ça ne fait pas de mal.
      1. je suis tellement desolée,j'ai cru que le "bonjour" s'ecrit par defaut dans ce site,je suis nouvelle,c'est la premiere fois que je poste une question dans un forum.desolée une autre fois