kimmelf2
Messages postés267Date d'inscriptionlundi 22 septembre 2003StatutMembreDernière intervention27 novembre 2005 12 déc. 2003 à 00:14
bah, c'est pas le + important...
miniviet
Messages postés2Date d'inscriptionjeudi 2 octobre 2003StatutMembreDernière intervention11 décembre 2003 11 déc. 2003 à 10:00
Salut je débute en c++ mais je sé ke les nombres premiers sont defini a partir de 2 donc 1 n'est pas premier hihihi.
kimmelf2
Messages postés267Date d'inscriptionlundi 22 septembre 2003StatutMembreDernière intervention27 novembre 2005 28 nov. 2003 à 02:18
ca je pense que c'est le genre de "detail" dont on ne saura jamais ce qu'il faut comprendre vraiment ... Au choix de chacun ;-)
ymca2003
Messages postés2070Date d'inscriptionmardi 22 avril 2003StatutMembreDernière intervention 3 juillet 20067 25 nov. 2003 à 13:13
Ouais mais qu'on on réalise la décomposition d'un nombre en facteur premier, on ne met pas 1. De plus, j'ai fais une recherche sur les nombres premiers (cf mes sources) et j'ai trouvé un article qui disait que 1 n'était pas premier.
kimmelf2
Messages postés267Date d'inscriptionlundi 22 septembre 2003StatutMembreDernière intervention27 novembre 2005 25 nov. 2003 à 01:38
ben il ne se divise que par 1 et par lui meme .... ;-D
ymca2003
Messages postés2070Date d'inscriptionmardi 22 avril 2003StatutMembreDernière intervention 3 juillet 20067 24 nov. 2003 à 14:31
Exact, mais j'avis juste mis ce que j'avais vu vite fait. Quand à 1 je ne sais pas s'il est considérer comme nombre premier.
kimmelf2
Messages postés267Date d'inscriptionlundi 22 septembre 2003StatutMembreDernière intervention27 novembre 2005 24 nov. 2003 à 02:02
pardon, il faur mettre if (N>3) a la place de if(N>2)
ce test est la car 1 2 3 sont premiers, et 2 peux creer une erreur avec le test if (N%2) donc comme il me fallait exclure la valeur particuliere 2, autant exclure aussi 1 et 3 en les donnant tout de suite premiers ...
kimmelf2
Messages postés267Date d'inscriptionlundi 22 septembre 2003StatutMembreDernière intervention27 novembre 2005 24 nov. 2003 à 01:58
ymca2003> tu oublie une mega grosse optimisation : l'arret des qu'un diviseur est trouve...
-------------------
bool diviseur=FALSE;
if (N<0) N=-N; // d'apres la definition, -3 est un nombre premier non ???
if (N=0)
{
diviseur=TRUE; // 0 n'est pas divisible par lui meme
}
else
{
if (N>2)
if (N%2 != 0)
for (i=2;i<=sqrt(N) && diviseur==FALSE;i=i+1)
if (N%i==0) diviseur=TRUE;
else diviseur=TRUE;
}
printf("%d %s un nombre premier
",N,diviseur ? "n'est pas" : "est");
--------------------
je pense avoir gere pas mal de cas ;-)
kimmelf2
Messages postés267Date d'inscriptionlundi 22 septembre 2003StatutMembreDernière intervention27 novembre 2005 24 nov. 2003 à 01:39
euh .... je vois pas beaucoup de difference avec ton source sur les nombres parfaits ... ;-D
Rmadmann007, le roi des mahs .... ;-p
ymca2003
Messages postés2070Date d'inscriptionmardi 22 avril 2003StatutMembreDernière intervention 3 juillet 20067 22 nov. 2003 à 22:17
Quelques optimisations possibles :
- stopper la boucle après racine carré de N : sqrt(N) au lieu de N/2
- ne pas diviser par les nombres pairs (sauf 2). Donc tester la division par 2 puis commencer la boucle à 3 et faire i+=2
12 déc. 2003 à 00:14
11 déc. 2003 à 10:00
28 nov. 2003 à 02:18
25 nov. 2003 à 13:13
25 nov. 2003 à 01:38
24 nov. 2003 à 14:31
24 nov. 2003 à 02:02
ce test est la car 1 2 3 sont premiers, et 2 peux creer une erreur avec le test if (N%2) donc comme il me fallait exclure la valeur particuliere 2, autant exclure aussi 1 et 3 en les donnant tout de suite premiers ...
24 nov. 2003 à 01:58
-------------------
bool diviseur=FALSE;
if (N<0) N=-N; // d'apres la definition, -3 est un nombre premier non ???
if (N=0)
{
diviseur=TRUE; // 0 n'est pas divisible par lui meme
}
else
{
if (N>2)
if (N%2 != 0)
for (i=2;i<=sqrt(N) && diviseur==FALSE;i=i+1)
if (N%i==0) diviseur=TRUE;
else diviseur=TRUE;
}
printf("%d %s un nombre premier
",N,diviseur ? "n'est pas" : "est");
--------------------
je pense avoir gere pas mal de cas ;-)
24 nov. 2003 à 01:39
Rmadmann007, le roi des mahs .... ;-p
22 nov. 2003 à 22:17
- stopper la boucle après racine carré de N : sqrt(N) au lieu de N/2
- ne pas diviser par les nombres pairs (sauf 2). Donc tester la division par 2 puis commencer la boucle à 3 et faire i+=2
bonne prog.