Programme sur les nombres entiers

Résolu
cs_K20 Messages postés 10 Date d'inscription samedi 26 juin 2004 Statut Membre Dernière intervention 24 juin 2006 - 6 avril 2005 à 15:11
cs_K20 Messages postés 10 Date d'inscription samedi 26 juin 2004 Statut Membre Dernière intervention 24 juin 2006 - 6 avril 2005 à 18:14
Bonjour tout le monde ! Je suis nouveau ici et j'ai un problème avec un programme en C++ ... j'utilise Dev C++ 3.0.

J'ai fait un programme qui permet de déterminer si un nombre est premier ou pas.

Pour cela, je vérifie si le nombre est divisible par tous les entiers
inférieurs ou égaux à sa racine carré (c'est ce qu'on apelle le
théorème de parité pour ceux qui connaissent ;))

Dans mon programme en fait, je divise le nombre par les entiers et je
vérifie si la valeur obtenu est égale à la partie entière de cette
division, en clair, je vérifie si la division tombe juste :p

Si elle tombe juste, alors le nombre n'est pas premier car il est divisible par un nombre, si non, il est premier !



Le problème c'est qu'à partir de 7, mon programme me dit que 7 n'est
pas premier ... Et ainsi de suite pour tous les autres nombres premiers
... Donc mon programme ne fonctionne pas ...



J'ai fait le même principe que sur mon script php (qui effectue la même
tache) et celui fonctionne parfaitement ... Ainsi que sur ma calculette
LOL !



Donc voilà, je voudrais savoir d'où vient mon problème :(



Voici le lien où télécharger la source de mon programme : http://demonstory.free.fr/premier.zip



Merci d'avance ;)

Ma base de smileys : http://smiliesworld.free.fr

5 réponses

angsthase Messages postés 72 Date d'inscription mardi 20 juillet 2004 Statut Membre Dernière intervention 11 avril 2005 1
6 avril 2005 à 17:22
Tiens, pour exemple :



#include <stdlib.h>

#include <stdio.h>

main()

{

int quotient, reste;

quotient=22/4;

reste=22%4;

printf("22/4:\nquotient : %i\nreste : %i\n\n",quotient,reste);

system("PAUSE");

}

<sub><sup> /*
N'oublier pas de valider le message qui vous a
satisfait ;-)

--------------- Campagne de validation des sujets------------------- */</sup></sub><sup>

</sup>
3
jul39dole Messages postés 117 Date d'inscription mardi 22 juillet 2003 Statut Membre Dernière intervention 21 janvier 2011
6 avril 2005 à 15:31
et tu n'as aucun warning à la compilation ? a la ligne if (c d) { i 1; }, je mettrai if((float)c==d){i=1;}
car la comparaison d'un entier et d'un float n'est pas tellement possible...
Un autre moyen plus simple est d'utiliser le module (opérateur % ), pour tester s'il y a un reste ou non.
0
cs_K20 Messages postés 10 Date d'inscription samedi 26 juin 2004 Statut Membre Dernière intervention 24 juin 2006
6 avril 2005 à 15:35
Erf, ça ne fonctionne toujours pas
et non je n'ai aucune erreur lors de la compilation ... Pourrais-tu
m'expliquer comment faire pour vérifier s'il y a un reste ou pas ?



Merci !


Ma base de smileys : http://smiliesworld.free.fr
0
angsthase Messages postés 72 Date d'inscription mardi 20 juillet 2004 Statut Membre Dernière intervention 11 avril 2005 1
6 avril 2005 à 17:12
le quotient est à la division ( / ) à ce que le reste est au modulo ( % )

int reponse = 22 / 4;

//reponse = 5
reponse = 22%4

// reponse = 2



RAPPEL :

numérateur = (dénominateur * quotient ) + reste

ici :

22 = ( 4*5)+2




/* N'oublier pas de valider le message qui vous a satisfait ;-) */
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_K20 Messages postés 10 Date d'inscription samedi 26 juin 2004 Statut Membre Dernière intervention 24 juin 2006
6 avril 2005 à 18:14
Merci beaucoup !!

1) Ba, ça résout mon problème !!

2) C'est beaucoup plus simple et mon programme est plus léger



Sujet résolu, je poste mon programme !


Ma base de smileys : http://smiliesworld.free.fr
0
Rejoignez-nous