487 visiteur(s) en ligne
Date actuelle : 15-11-2024, 03:30 AM Bienvenue, Visiteur ! ( Identification S'enregistrer )







 
[Résolu] Exercice en C , trouver si un nombre est premier
 
Note de cette discussion :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
Auteur Message
Chamaille Hors ligne
Informaticien qualifié
****

Messages : 506
Inscription : Jul 2006
Réputation : 0
Message : #1
[Résolu] Exercice en C , trouver si un nombre est premier
Bonjour!

J'ai un petit exercice à faire (je dois le terminer demain matin alors si vous pouviez m'aider??!!):
le but est de vérifier si un nombre donné est premier ou non. On peut utiliser l'instruction break.

NB: Un nombre est premier si et seulement s'il est divisible seulement pas 1 et lui-même!

Voici ce que j'ai fait:

Citation :#include <stdio.h>
#include <math.h>
#include <stdlib.h>

int main(void)
{
int nombre=10, i=2;
int premiertest, deuxiemetest;


// Besoin du test /1 ?
while(i<=nombre)
{
premiertest=nombre%1;
deuxiemetest=nombre%i;
if(premiertest!=0)
{
printf("%d n'est pas un nombre premier\n",nombre);
i=nombre+1;
}
else if(premiertest==0 &amp;&amp; deuxiemetest!=0 &amp;&amp; nombre<i)
{
i++;
}
else if (premiertest==0 &amp;&amp; deuxiemetest==0 &amp;&amp; nombre!=i)
{
printf("%d n'est pas un nombre premier\n",nombre);
i=nombre+1;
}
else if (premiertest==0 &amp;&amp; deuxiemetest==0 &amp;&amp; nombre==i)
printf("%d est un nombre premier\n",nombre);


}
return 0;
}


Pourriez-vous vérifier si c'est correct? Et me donner des idées pour l'améliorer? Par exemple en diminuant le nombre de conditions à tester si c'est possible?
Lorsque je choisis nombre=10, on me dit bien qu'il n'est pas premier, mais lorsque je choisis un nombre que je sais premier par exemple 11, le programme se lance et n'affiche rien, vraiment rien! Il ne se ferme même pas.

Que faire d'ailleurs lorsqu'un programme fait ça?


Merci beaucoup d'avance! Big Grin

Image: Chamaille.jpg

CARPE DIEM
07-02-2008 16:29 PM
Envoyer un email à cet utilisateur Trouver tous les messages de cet utilisateur Citer ce message dans une réponse
Troll Hors ligne
Trolls' master
******

Messages : 15 818
Inscription : Mar 2006
Réputation : 21
Message : #2
 
Salut Chamaille ! Smile


Alors tout d'abord, content de te revoir Wink

Ensuite, je remarque, bien que j'ai des connaissances quasi-inexistantes en C, que ton programme fonctionne à mon goût de manière étrange.

Tout d'abord tu vérifies s'il se divise par 1 si je ne me trompe : aucun besoin puisque tous les nombres sont divisibles par un (à part peut-être les irréels, mais ça m'étonnerait que tu doives gérer les irréels).

Ensuite tu défini un paramètre qui est le maximum d'itérations de ta boucle, cependant ce paramètre est défini manuellement, donc faut avoir une idée du nombre d'itérations à tester... Ce qui risque d'être dur avec par exemple 0938530 Smile

Le théorème :
Un nombre est premier s'il n'est pas divisible par tous les chiffres impairs situés entre 1 et sa racine.

Donc ton parametre (i) tu le met = sqrt(nombre)

Si cela ne suffit pas à te sortir de la galère, un peu de lecture


Voilà, à bientôt Wink

Un poste sans accent ? La faute au clavier qwerty :/
|| Merci de mettre des titres explicites !!! || La bouille à Troll ? || 
Vous voulez remercier l'équipe du forum ? Participez ! Exprimez-vous ! Revenez et parlez de ce que vous voulez ! Wink Image: actualites-informatiques-pcw.1.gif
07-02-2008 17:13 PM
Visiter le site internet de cet utilisateur Trouver tous les messages de cet utilisateur Citer ce message dans une réponse
Chamaille Hors ligne
Informaticien qualifié
****

Messages : 506
Inscription : Jul 2006
Réputation : 0
Message : #3
 
Merci pour ta réponse!

Pour la division par 1 je pense que je vais la retirer oui.
Sinon à propos de la lecture que tu m'as donnée, ils utilisent les booléens si je ne me trompe.
Le problème c'est que je ne peux pas encore l'utiliser: début des cours de C oblige, le prof ne l'a pas encore fait...

Image: Chamaille.jpg

CARPE DIEM
07-02-2008 21:11 PM
Envoyer un email à cet utilisateur Trouver tous les messages de cet utilisateur Citer ce message dans une réponse
Troll Hors ligne
Trolls' master
******

Messages : 15 818
Inscription : Mar 2006
Réputation : 21
Message : #4
 
Bah fais comme je t'ai dit Wink

Tu fais une fonction nbpremier(nombre)

tu calcule :
int max = SQRT(nombre)+0.5; (le + 0.5 c'est au cas ou nombre serait un carré parfait).


Ensuite tu fais une boucle for :

for(i=1;i<=max;i+2)
{
tu vérifies si nombre est divisible par i
Si oui -> Pas premier, si non : on continue
}
Si la boucle n'a pas été arrêté par un affichage, le nombre est premier, tu affiche que le nombre est premier Smile
[Je pourrais te faire ca en PHP mais en C je ne peux me contenter que de te donner la méthode Wink ]

Un poste sans accent ? La faute au clavier qwerty :/
|| Merci de mettre des titres explicites !!! || La bouille à Troll ? || 
Vous voulez remercier l'équipe du forum ? Participez ! Exprimez-vous ! Revenez et parlez de ce que vous voulez ! Wink Image: actualites-informatiques-pcw.1.gif
07-02-2008 22:43 PM
Visiter le site internet de cet utilisateur Trouver tous les messages de cet utilisateur Citer ce message dans une réponse
Chamaille Hors ligne
Informaticien qualifié
****

Messages : 506
Inscription : Jul 2006
Réputation : 0
Message : #5
 
j'ai finalement réussi merci!

Image: Chamaille.jpg

CARPE DIEM
08-02-2008 16:11 PM
Envoyer un email à cet utilisateur Trouver tous les messages de cet utilisateur Citer ce message dans une réponse
Troll Hors ligne
Trolls' master
******

Messages : 15 818
Inscription : Mar 2006
Réputation : 21
Message : #6
 
Salut Smile

Content pour toi, est-ce que tu as réussi suite à ce que je t'ai conseillé ?

Si tu pouvais nous donner ton code fonctionnel je suis sûr que ça en aiderait d'autres Wink

Un poste sans accent ? La faute au clavier qwerty :/
|| Merci de mettre des titres explicites !!! || La bouille à Troll ? || 
Vous voulez remercier l'équipe du forum ? Participez ! Exprimez-vous ! Revenez et parlez de ce que vous voulez ! Wink Image: actualites-informatiques-pcw.1.gif
08-02-2008 19:05 PM
Visiter le site internet de cet utilisateur Trouver tous les messages de cet utilisateur Citer ce message dans une réponse
Chamaille Hors ligne
Informaticien qualifié
****

Messages : 506
Inscription : Jul 2006
Réputation : 0
Message : #7
 
oui l'idée d'utiliser la racine carrée m'a aidé par exemple,
pour ce qui est du code, je l'afficherai (si j'y pense) dès lors que je le récupérerai: je l'ai laissé sur l'ordi de ma fac... Confused

Image: Chamaille.jpg

CARPE DIEM
08-02-2008 19:37 PM
Envoyer un email à cet utilisateur Trouver tous les messages de cet utilisateur Citer ce message dans une réponse
Troll Hors ligne
Trolls' master
******

Messages : 15 818
Inscription : Mar 2006
Réputation : 21
Message : #8
 
D'accord Smile

Un poste sans accent ? La faute au clavier qwerty :/
|| Merci de mettre des titres explicites !!! || La bouille à Troll ? || 
Vous voulez remercier l'équipe du forum ? Participez ! Exprimez-vous ! Revenez et parlez de ce que vous voulez ! Wink Image: actualites-informatiques-pcw.1.gif
08-02-2008 19:40 PM
Visiter le site internet de cet utilisateur Trouver tous les messages de cet utilisateur Citer ce message dans une réponse
TotofTeam Hors ligne
Designer
******

Messages : 948
Inscription : Mar 2006
Réputation : 0
Message : #9
 
Salut, il est sympathique de mettre de l'indentation dans tes codes sources, pour une meilleur visibilité Wink ( tabulation )

Mon Portfolio : www.christophe-sciortino.fr
Have a nice day Sleepy
08-02-2008 21:08 PM
Envoyer un email à cet utilisateur Visiter le site internet de cet utilisateur Trouver tous les messages de cet utilisateur Citer ce message dans une réponse
Troll Hors ligne
Trolls' master
******

Messages : 15 818
Inscription : Mar 2006
Réputation : 21
Message : #10
[Résolu] Exercice en C , trouver si un nombre est premier
Chamaille a écrit :oui l'idée d'utiliser la racine carrée m'a aidé par exemple,
pour ce qui est du code, je l'afficherai (si j'y pense) dès lors que je le récupérerai: je l'ai laissé sur l'ordi de ma fac... Confused



Ton ordi est toujours pas revenu de la FAC ? Smile

Un poste sans accent ? La faute au clavier qwerty :/
|| Merci de mettre des titres explicites !!! || La bouille à Troll ? || 
Vous voulez remercier l'équipe du forum ? Participez ! Exprimez-vous ! Revenez et parlez de ce que vous voulez ! Wink Image: actualites-informatiques-pcw.1.gif
06-06-2008 05:06 AM
Visiter le site internet de cet utilisateur Trouver tous les messages de cet utilisateur Citer ce message dans une réponse




Discussions apparemment similaires...
Discussion : Auteur Réponses : Affichages : Dernier message
  Trouver quelqu'un sur Twitter ou Facebook poeta6969 3 4 636 02-10-2014 07:24 AM
Dernier message: Troll
  SVP aide pour trouver URL vidéo en direct katykat75 1 6 442 09-10-2010 11:11 AM
Dernier message: Troll

Aller à :


Utilisateur(s) parcourant cette discussion : 1 visiteur(s)