ssaboum
Messages postés10Date d'inscriptionjeudi 1 juillet 2004StatutMembreDernière intervention30 juillet 2004 31 juil. 2004 à 11:31
Je confirme Metaldwarf a fait un programme utilisant une librairie pour la théorie des nombres avec la methode de miller rabin
bon g pas encore reussi a le faire marché :(
mais je ne sais pas très bien installé une nouvelle librairie non plus.
alors voilà qd meme le lien
http://www.cppfrance.com/code.aspx?id=21009
++
Ssaboum
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 31 juil. 2004 à 01:17
autrement, j'ai trouvé de la doc en français sur miller rabin, et ici, tu as des sources expliquant ce principe... (moi, j'ai rien compris)
t'as metaldiarf qui a fait ça ici je crois...
miller rabin, c'est super rapide, c'est le principal avantage, mais c'est pas exact...
cs_Kirua
Messages postés3006Date d'inscriptiondimanche 14 avril 2002StatutMembreDernière intervention31 décembre 2008 30 juil. 2004 à 22:46
Kirua il va pas pouvoir t'aider, j'y connais pas grand chose moi :/ suis au courant de c qui existe mais pour ce qui est de comprendre la preuve / coder l'algo j'ai pas d'expérience. l'algo probabiliste c'est rien à voir avec l'algo des 3 indiens. pour ce dernier, un coup de google sur algorithme 3 indiens nombre premier devrait donner un résultat je pense ^^ normalement c'est un document pdf publié par eux avec une explication mathématique (pr pas dormir) et puis surtout l'algo en pseudo-code, qu'il faut écrire en C/C++.
ssaboum
Messages postés10Date d'inscriptionjeudi 1 juillet 2004StatutMembreDernière intervention30 juillet 2004 29 juil. 2004 à 19:32
merci pour ces commentaires, je vais changer le code en conséquence, je vais garder pour les remplacements :
-l'utilisation d'autre chose que des branchements (goto)
et je vais aussi essayer de chercher a propos de l'algorithme "crée par trois indiens" dont tu parles coucou747 (même si je l'avoue j'aimerai beaucoup beaucoup que kirua le mette !) sinon si je le trouve avant, je promet de le mettre en commentaire parole d'honneur !
je fais les changements de suite
A+
Ssaboum
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 29 juil. 2004 à 19:18
le crible d'ératostène ne doit pas être utilisé dans ce cas la, car ce cryble sert a connaitre tout les nombres premiers infèrieurs a un autre nombre, or ici, tu ne cherches qu'un nombre premier...
les nombres sous la forme : n=2^p-1 ou p est premier sont apelés nombres de mercènes, mais ils sont aujourd'huit inutilisablezs (le plus grand nombre premier trouvé a l'heure actuelle est un nombre de mercène) Ces nombres sont particuliers, donc, si tu cherches a être la personne qui trouvera le prochain plus grand nombre premier découvert, tu peux l'utiliser, mais si tu cherhces a crypter un fichier, c'est totalement inutile...
Pour les nombres premiers, tu as miller rabin qui est pas mal, dsl, je ne connais ce tes que de nom...
Tu as aussi un test créé par trois indiens (je crois) qui est du niveau terminale pour le mettre en place, mais d'un autre niveau pour le comprendre... (diconc cimplement que je ne suis pas rendu)...
Kirua, tu en avais parlé, tu avais dit que tu avais un SVJ qui donnait l'algo en pseudo code, je suis prenneur si tu veux bien le mettre en commentaire, ça lui permetra de modifier son programme... (et je vais faire pareil que lui, mais avec des nombres un peu plus grand...)
Ton test est largement suffisament optimisé pour des nombres codés sur 32 bits, je ne l'ai pas testé, mais j'ai fait tourné un algorythme basé sur le même principe, et j'arrivais à avoir plusieurs nombres par secondes...
Bon début, mais pour ceci, tu peux facilement te passer de math.h ne pas mettre de goto etc...
par exemple, a la place de
if (b==sqrt(a));
tu mets
if (b*b==a)
toughwhale
Messages postés8Date d'inscriptionvendredi 9 avril 2004StatutMembreDernière intervention26 juillet 2004 26 juil. 2004 à 20:39
ton source est jolie c'est bien mais ton code est a peut pres longue tu peux l'ameliorer pour etre 8 a 10 ligne
bien programme.
brenntengel
Messages postés49Date d'inscriptionjeudi 10 juin 2004StatutMembreDernière intervention 6 mai 2006 26 juil. 2004 à 17:02
C'est pas mal de tout.
Mais un conseil :L'utilisation de goto et DECONSEILLER !!(Les branchement )
utilise do while c'est mieux !!
ssaboum
Messages postés10Date d'inscriptionjeudi 1 juillet 2004StatutMembreDernière intervention30 juillet 2004 15 juil. 2004 à 22:52
c possible tu as raison mais le else ne change pas grand chose dans le code, sauf perdre "du temps"
mais là ca se jout a la mililililililiseconde je pense que l'on peut s'en passer ;-)
mais merci
il me semble qui ya une erreur:
if (a<0) a=-a;
else b=sqrt(a);
printf ("il admet pour racine carre :%f\n",b);
je le corrigerai en enlevant le "else"
cs_Kirua
Messages postés3006Date d'inscriptiondimanche 14 avril 2002StatutMembreDernière intervention31 décembre 2008 13 juil. 2004 à 09:52
renseigne toi sur le crible d'eratosthène, ça prend 10 lignes à programmer, et ca te permettra daccelerer les choses. (desole pr lecriture, je viens de passer 12 jours sur un qwerty, je nai plus lhabitude des apostrophes et des accents :p)
remarque que pr les grands nombres (plusieurs dizaines de chiffres comme pr le RSA (en fait plusieurs centaines)) il faut utiliser un algo probabiliste, et ca, ben euh, euh, une autre fois :p
elinep
Messages postés56Date d'inscriptionjeudi 4 décembre 2003StatutMembreDernière intervention 3 décembre 2009 1 juil. 2004 à 14:14
halala je serais celebre si je pouvais te donner une formule magique donnant les nombres premiers dans l'odre :)
C'est un truc qu'il reste a decouvrir, a l'heure actuelle c'est pas possible...
Sinon je crois savoir qu'il existe un algo plus performant pour tester si un nombre est premier, il utilise la formule "p^n congru à p[n]" (je crois que c'est ca la formule je suis pas sur :p)
C'est assez recent comme algo, je sais pas si on peut trouver des infos dessus...
Dans l'espoir de ne pas avoir dit trop de betise :D
ssaboum
Messages postés10Date d'inscriptionjeudi 1 juillet 2004StatutMembreDernière intervention30 juillet 2004 1 juil. 2004 à 13:15
Ouais merci pour ce conseil, mais en fait je crois que ce qu'il faudrait pour arriver a mettre a profit chaque boucle c que x devienne a chaque boucle un nombre premier different inferieur a la racine carré de a....
Si tu sais comment faire informe moi :-)
A+
Ssaboum
elinep
Messages postés56Date d'inscriptionjeudi 4 décembre 2003StatutMembreDernière intervention 3 décembre 2009 1 juil. 2004 à 10:31
Salut, une petite optimisation super simple au lieu de faire x++, tu incremente de 2 car une fois qu tu as teste la divisibilite par 2 cela ne sert a rien de tester par 4,6,8...donc tu pars de x=2 et tu fais x=x+2.
31 juil. 2004 à 11:31
bon g pas encore reussi a le faire marché :(
mais je ne sais pas très bien installé une nouvelle librairie non plus.
alors voilà qd meme le lien
http://www.cppfrance.com/code.aspx?id=21009
++
Ssaboum
31 juil. 2004 à 01:17
t'as metaldiarf qui a fait ça ici je crois...
miller rabin, c'est super rapide, c'est le principal avantage, mais c'est pas exact...
http://www.labri.fr/Perso/~betrema/deug/poly/premiers.html
voila, et y a des sources...
30 juil. 2004 à 23:24
voilà la page originel (et donc en anglais sorry ;-))
http://www.cse.iitk.ac.in/news/primality.pdf
Enjoy
Ssaboum
"Ashita e to !!"
30 juil. 2004 à 22:46
29 juil. 2004 à 19:32
-l'utilisation d'autre chose que des branchements (goto)
et je vais aussi essayer de chercher a propos de l'algorithme "crée par trois indiens" dont tu parles coucou747 (même si je l'avoue j'aimerai beaucoup beaucoup que kirua le mette !) sinon si je le trouve avant, je promet de le mettre en commentaire parole d'honneur !
je fais les changements de suite
A+
Ssaboum
29 juil. 2004 à 19:18
les nombres sous la forme : n=2^p-1 ou p est premier sont apelés nombres de mercènes, mais ils sont aujourd'huit inutilisablezs (le plus grand nombre premier trouvé a l'heure actuelle est un nombre de mercène) Ces nombres sont particuliers, donc, si tu cherches a être la personne qui trouvera le prochain plus grand nombre premier découvert, tu peux l'utiliser, mais si tu cherhces a crypter un fichier, c'est totalement inutile...
Pour les nombres premiers, tu as miller rabin qui est pas mal, dsl, je ne connais ce tes que de nom...
Tu as aussi un test créé par trois indiens (je crois) qui est du niveau terminale pour le mettre en place, mais d'un autre niveau pour le comprendre... (diconc cimplement que je ne suis pas rendu)...
Kirua, tu en avais parlé, tu avais dit que tu avais un SVJ qui donnait l'algo en pseudo code, je suis prenneur si tu veux bien le mettre en commentaire, ça lui permetra de modifier son programme... (et je vais faire pareil que lui, mais avec des nombres un peu plus grand...)
Ton test est largement suffisament optimisé pour des nombres codés sur 32 bits, je ne l'ai pas testé, mais j'ai fait tourné un algorythme basé sur le même principe, et j'arrivais à avoir plusieurs nombres par secondes...
Bon début, mais pour ceci, tu peux facilement te passer de math.h ne pas mettre de goto etc...
par exemple, a la place de
if (b==sqrt(a));
tu mets
if (b*b==a)
26 juil. 2004 à 20:39
bien programme.
26 juil. 2004 à 17:02
Mais un conseil :L'utilisation de goto et DECONSEILLER !!(Les branchement )
utilise do while c'est mieux !!
15 juil. 2004 à 22:52
mais là ca se jout a la mililililililiseconde je pense que l'on peut s'en passer ;-)
mais merci
15 juil. 2004 à 22:43
if (a<0) a=-a;
else b=sqrt(a);
printf ("il admet pour racine carre :%f\n",b);
je le corrigerai en enlevant le "else"
13 juil. 2004 à 09:52
remarque que pr les grands nombres (plusieurs dizaines de chiffres comme pr le RSA (en fait plusieurs centaines)) il faut utiliser un algo probabiliste, et ca, ben euh, euh, une autre fois :p
1 juil. 2004 à 14:14
C'est un truc qu'il reste a decouvrir, a l'heure actuelle c'est pas possible...
Sinon je crois savoir qu'il existe un algo plus performant pour tester si un nombre est premier, il utilise la formule "p^n congru à p[n]" (je crois que c'est ca la formule je suis pas sur :p)
C'est assez recent comme algo, je sais pas si on peut trouver des infos dessus...
Dans l'espoir de ne pas avoir dit trop de betise :D
1 juil. 2004 à 13:15
Si tu sais comment faire informe moi :-)
A+
Ssaboum
1 juil. 2004 à 10:31