Un entier premier
angem20
-
loupius Messages postés 789 Statut Membre -
loupius Messages postés 789 Statut Membre -
je dois faire un code qui accepte deux nombre premier,j'ai fais ce code:
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??????!!!!!!!
#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
-
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. -
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.