NOMBRE PREMIER OU PAS ? : VERIFICATION PAR CE PROGRAMME

elinep Messages postés 56 Date d'inscription jeudi 4 décembre 2003 Statut Membre Dernière intervention 3 décembre 2009 - 1 juil. 2004 à 10:31
ssaboum Messages postés 10 Date d'inscription jeudi 1 juillet 2004 Statut Membre Dernière intervention 30 juillet 2004 - 31 juil. 2004 à 11:31
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/24165-nombre-premier-ou-pas-verification-par-ce-programme

ssaboum Messages postés 10 Date d'inscription jeudi 1 juillet 2004 Statut Membre Dernière intervention 30 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és 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
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...

http://www.labri.fr/Perso/~betrema/deug/poly/premiers.html

voila, et y a des sources...
ssaboum Messages postés 10 Date d'inscription jeudi 1 juillet 2004 Statut Membre Dernière intervention 30 juillet 2004
30 juil. 2004 à 23:24
voilà l'algorithme tant evoqué dans les commentaires !!!!
voilà la page originel (et donc en anglais sorry ;-))

http://www.cse.iitk.ac.in/news/primality.pdf


Enjoy

Ssaboum

"Ashita e to !!"
cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 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és 10 Date d'inscription jeudi 1 juillet 2004 Statut Membre Dernière intervention 30 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és 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
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és 8 Date d'inscription vendredi 9 avril 2004 Statut Membre Dernière intervention 26 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és 49 Date d'inscription jeudi 10 juin 2004 Statut Membre Derniè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és 10 Date d'inscription jeudi 1 juillet 2004 Statut Membre Dernière intervention 30 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
Utilisateur anonyme
15 juil. 2004 à 22:43
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és 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 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és 56 Date d'inscription jeudi 4 décembre 2003 Statut Membre Derniè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és 10 Date d'inscription jeudi 1 juillet 2004 Statut Membre Dernière intervention 30 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és 56 Date d'inscription jeudi 4 décembre 2003 Statut Membre Derniè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.
Rejoignez-nous