Programme sur les nombres entiers [Résolu]

Signaler
Messages postés
10
Date d'inscription
samedi 26 juin 2004
Statut
Membre
Dernière intervention
24 juin 2006
-
Messages postés
10
Date d'inscription
samedi 26 juin 2004
Statut
Membre
Dernière intervention
24 juin 2006
-
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

Messages postés
72
Date d'inscription
mardi 20 juillet 2004
Statut
Membre
Dernière intervention
11 avril 2005
1
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>
Messages postés
117
Date d'inscription
mardi 22 juillet 2003
Statut
Membre
Dernière intervention
21 janvier 2011

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.
Messages postés
10
Date d'inscription
samedi 26 juin 2004
Statut
Membre
Dernière intervention
24 juin 2006

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
Messages postés
72
Date d'inscription
mardi 20 juillet 2004
Statut
Membre
Dernière intervention
11 avril 2005
1
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 ;-) */
Messages postés
10
Date d'inscription
samedi 26 juin 2004
Statut
Membre
Dernière intervention
24 juin 2006

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