coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 4 juil. 2004 à 19:31
pour la boucle de 2 a la racine carrée, vous n'avez pas besoin de la librairie math.h
de 2 a racine de b
for (a=2, a*a<b+1; a++){
if (b%a==0){
nombre qui n'est pas premier
}
}
Sensei01
Messages postés94Date d'inscriptionsamedi 22 février 2003StatutMembreDernière intervention27 juin 2006 24 févr. 2003 à 18:36
c vrai, ce code n'est pas idéal, mais je l'ai tapé en vitesse car j'en avais besoin.
....
cs_tavernier
Messages postés47Date d'inscriptionmardi 1 octobre 2002StatutMembreDernière intervention 3 juin 2003 24 févr. 2003 à 12:28
pour tester la primalité.
Ton code regarde tout d'abord s'il est divisible par deux (donc s'il est pair). Si la boucle continue, c'est qu'il ne l'est pas, donc il ne peut etre divisible par aucun nombre pair (tu testes pourtant tous les nombes inférieurs a data).
Personnellement à la place de j++, je mettrais j==2?j++:j+=2;
Voila
julien
cs_kjus
Messages postés269Date d'inscriptionmercredi 24 avril 2002StatutMembreDernière intervention 9 juin 2003 23 févr. 2003 à 22:01
salut,
Juste quelques conseils pour améliorer le code :
-Pour tester la primalité de ton nombre (data), il suffit de tester les division de 2 à racine de data inclus. (#include <math.h>, sqrt(data) );
- je vois que pour convertir data en float, tu multiplies par 1.0. tu peux faire static_cast<float> (data) pour la convertir en float le temps de la division.
- Au lieu de diviser en float, puis de reconvertir en long, il vaut mieux faire le test :
if (data % j ==0) {
val=1;
printf("..");
break;
}
- En C++, utiliser le type bool (false ou true) rend le prgm plus clair (je pense pour la valeur de retour de verif_premier).
raph
4 juil. 2004 à 19:31
de 2 a racine de b
for (a=2, a*a<b+1; a++){
if (b%a==0){
nombre qui n'est pas premier
}
}
24 févr. 2003 à 18:36
....
24 févr. 2003 à 12:28
Ton code regarde tout d'abord s'il est divisible par deux (donc s'il est pair). Si la boucle continue, c'est qu'il ne l'est pas, donc il ne peut etre divisible par aucun nombre pair (tu testes pourtant tous les nombes inférieurs a data).
Personnellement à la place de j++, je mettrais j==2?j++:j+=2;
Voila
julien
23 févr. 2003 à 22:01
Juste quelques conseils pour améliorer le code :
-Pour tester la primalité de ton nombre (data), il suffit de tester les division de 2 à racine de data inclus. (#include <math.h>, sqrt(data) );
- je vois que pour convertir data en float, tu multiplies par 1.0. tu peux faire static_cast<float> (data) pour la convertir en float le temps de la division.
- Au lieu de diviser en float, puis de reconvertir en long, il vaut mieux faire le test :
if (data % j ==0) {
val=1;
printf("..");
break;
}
- En C++, utiliser le type bool (false ou true) rend le prgm plus clair (je pense pour la valeur de retour de verif_premier).
raph