Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

RECHERCHE DE NOMBRES PREMIERS


Information sur la source

Catégorie :Maths Classé sous : nombres, premiers, recherche, calculs Niveau : Débutant Date de création : 18/11/2004 Date de mise à jour : 22/11/2005 18:29:00 Vu / téléchargé: 13 096 / 529

Note :
9,6 / 10 - par 5 personnes
9,60 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (184)
Ajouter un commentaire et/ou une note


Description

Cliquez pour voir la capture en taille normale
Salut à tous
voilà ce soir j'ai eu une pulsion, j'avais envie de chercher des nombres premiers, peut-etre pour plus tard développer un programme de cryptage RSA, donc je me suis amusé.
C'est un programme qui cherche les nombres premiers en fonction du nombre où il s'est arreté dans l'utilisation précédente, c'est à dire que le dernier nombre analysé est sauvegardé dans un fichier, et tous les nombres premiers trouvés sont sauvegardés aussi dans un autre fichier texte.

En plus que je n'aime pas avoir un pc qui ne bosse pas quand je suis pas la, si y'en a dans le meme cas que moi vous verrez ça soulage lol (un peu comme avec Seti@home)
Bon amusez vous, ça vous servira peut-etre pour programmer un crypteur utilisant les nombres premiers.
a +
MadMatt
 

Conclusion

suivant le nombre ça me sort entre 100 et 1000 nombres par secondes, selon la taille du nombre
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Historique

18 novembre 2004 20:20:55 :
vitesse x20 en cherchant jusqu'a la racine au lieu de la moitié
18 novembre 2004 21:04:16 :
reglage du problème concernant l'enregistrement des nombres premiers : si il y en avait trop a sauvegarder ça plantait -> sauvegarde automatique tout les 1 000 nombres
18 novembre 2004 22:29:36 :
gain de quelques secondes grâce à Vlad2i
22 novembre 2005 18:29:00 :
Ajout des mots clés

Commentaires et avis

signaler à un administrateur
Commentaire de MadM@tt le 18/11/2004 18:14:38

PS : pour l'instant mon max est à 260 987 qui dit mieu ?

pour ceux que ça interesse des scientifiques en ont trouvé à x10^340 chiffres je crois, dans cet ordre de grandeur la

Si vous avez un meilleur algorithme a proposer, allez-y

signaler à un administrateur
Commentaire de spy166 le 18/11/2004 18:26:21

Ca sert à quoi d'avoir des chiffres pareils ?

signaler à un administrateur
Commentaire de MadM@tt le 18/11/2004 18:52:29

Pour crypter c'est essentiel :
quand tu prend 2 nombres premiers p et q (qui je le précise ne sont donc divisibles que par 1 ou par eux-meme) et que tu les multiplie : p*q
le produit p*q peut-etre rendu public et des fichiers peuvent etre codés avec, mais pour décoder il faudra se servir de p et q séparément.
Or l'avantage des nombres premiers multipliés ainsi, c'est que à partir du produit p*q il est extremement difficile de retrouver le p et le q du départ... (ça nécessite énormément d'ordis et de temps).

Donc en gros tu code avec p*q qui est public, et seulement l'utilisateur qui a la vraie clé : p et q séparément, peut décoder le fichier obligatoirement avec les 2 nombres séparés (c'est du à des calculs mathématiques assez compliqués)

euh chu pas un expert, jme suis peut etre trompé quelque part mais dans l'ensemble c'est ça

signaler à un administrateur
Commentaire de spy166 le 18/11/2004 19:35:46

Ah oki même principe que le RSA.

signaler à un administrateur
Commentaire de Pingouin le 18/11/2004 19:59:51

Salut,
Juste une petite amélioration de rien : j'ai vu que tu cherchais les diviseurs jusqu'a nombre /2 en fait on peut démontrer (mais c pas évident) qu'il suffit de s'arrêter a la racine carré du nombre, ca diminue sensiblement le nombre de calculs et améliore donc la vitesse, ce qui n'est pas négligeable dans ce genre de prog.
Sinon fais en quelque chose de bo graphiquement comme ca ca pourra en effet décorer le pc pdt kil ne fait rien...

@+

Pingouin

signaler à un administrateur
Commentaire de MadM@tt le 18/11/2004 20:18:18

Génial ça c'est du commentaire, merci Pingouin je vais regarder ça de plus près, sinon je pensais aussi le mettre en écran de veille avec un petit truc graphique, ça sera plus pratique a utiliser et ça ne demandera aucun effort.
@ +

signaler à un administrateur
Commentaire de MadM@tt le 18/11/2004 20:24:54

oulala la vitesse est multipliée par 20 même plus merci Pingouin, sinon spy166 oui c'est le principe du cryptage RSA
par contre je me demande si quand j'arriverai à des nombres tellement grands qu'ils seront stockés sous la forme .....*10^n
est ce que ça me garde en mémoire tous les chiffres du nombre ou alors ça garde seulement l'expression ....*10^n ? si quelqu'un peut m'apporter une réponse

signaler à un administrateur
Commentaire de spy166 le 18/11/2004 21:52:40

Je viens de chronométrer, chez moi en 1 minute tout rond je trouve jusqu'a 1 501 598.
Pas mal non ?

signaler à un administrateur
Commentaire de vlad2i le 18/11/2004 22:05:00

Oulala hehe c'est une méthode brutale pour trouver ca...

Quelques idées :

Un nombre premier x est forcément tel que x mod 4 = 3 ou x mod 4 = 1 et forcément tel que x mod 6 = 1 ou x mod 6 = 5 ca peut largement augmenter la vitesse de ta recherche (par exemple en fesant une boucle de I à I\6 et en testant la primalité des nombres 6*I+1 et 6*I-1)

Ensuite, éviter les nombres évidemment pairs, alias nombres pairs et multiples de 5 par exemple ...

Si tu veux vraiment un algorithme éfficace, j'ai un document de trois chercheurs indiens qui ont utilisé une intégrale de ramanujan pour étudier la congruence des nombres non premiers - et qui que quand il renvoie q'un nombre est premier c'est avec 100% de certitude (l'inverse n'est pas vrai par contre :))

Parce que pour RSA, la sécurité est faible en dessous de 300 chiffres, produit : 300×300 = 90000 chiffres pour le produit pq :) il faut donc que tu gères les grands chiffres :)

Vlad

signaler à un administrateur
Commentaire de MadM@tt le 18/11/2004 22:14:05

merci pour ces infos vlad2i justement je voulais que cette source soit un point de départ pour réaliser un algorithme de cryptage RSA, en arrivant a bien manipuler les nombres premiers.
Comme tu l'a dit il faudra penser au grands nombres, et pour les techniques que tu m'a donné pour calculer plus vite les nombres premiers merci beaucoup je regarderais ça avec bcp d'attention.

mais par contre je ne comprend pas pourquoi tu veux faire une boucle de I à I/6, c'est pas possible de tester ça ? :
If (x mod 4 = 3 or x mod 4 = 1) and (x mod 6 = 1 or x mod 6 = 5) Then

quand tu parle de 100% de certitude, tu veux dire que l'algorithme (barbare c'est clair) que j'utilise n'est pas très fiable ?

Et enfin oui je vais penser à détecter automatiquement les chiffres pairs.

merci
@ +

signaler à un administrateur
Commentaire de vlad2i le 18/11/2004 22:20:11

Ton interpretation est exacte, mais cependant, tu devrais utiliser plutot

If  ((x mod 4 = 3 or x mod 4 = 1) and (x mod 6 = 1 or x mod 6 = 5)) Then
'La tu teste la primalité - la nombre est peut etre premier
else
'Le nombre n'est pas premier
endif

Car il se peut qu'un nombre ne soit pas premier mais passe le test qd meme, et là tu peux d'office tester (ce qui réduit considérablement les tests qd meme)

"quand tu parle de 100% de certitude, tu veux dire que l'algorithme (barbare c'est clair) que j'utilise n'est pas très fiable ?"

Non, en fait il est fiable, mais lent - je parlait de l'algorithme intégral, enfin peu importe

Vlad

signaler à un administrateur
Commentaire de MadM@tt le 18/11/2004 22:27:26

lol ok pour l'algorithme intégral
j'ai essayer de détecter si c'était un nombre pair ou multiple de 5 avant les calculs plus compliqués mais j'ai constaté aucun gain de temps, si ce n'est de la perte.

Pour ton truc de modulo, ça m'a fait gagné environ 1 sec sur 13 c'est pas mal, j'ai donc environ 12 sec pour 100 000 nombres premiers trouvés

merci vlad
(je met la source à jour)

signaler à un administrateur
Commentaire de Mindiell le 19/11/2004 16:33:06

Pour information, ton programme me donne ca au début :
1
5
7

Je suis au regret de te dire qu'il manque 2 et 3 comme nombres premiers. J'accorde le 1 bien qu'au point de vue mathématiques le 1 n'est pas premier pour des questions de généralisation de lois sur ces nombres...

signaler à un administrateur
Commentaire de vlad2i le 19/11/2004 16:38:04

Effectivement : 2 et 3 manquent a l'appel (c'est du à la méthode par modulo) mais ca ne change rien car il suffit d'ajouter deux nombres :)

Quant à 1 il n'est pas premier :) l'algo est donc sûr au delà de 5 inclus :)

signaler à un administrateur
Commentaire de vlad2i le 19/11/2004 16:46:07

J'ajoutes que pour optimiser d'avantage la vérification de primalité, tu devrais stocker les nombres premiers trouvés dans un tableau (ex: prems() ) qui contient les premiers a partir de 3 inclus et pour tester

Function TestPremier(x)
     If X mod 2 = 0 then PasPremier

     For I = 0 to ubound(prems)
          If prems(I)<int(sqr(x)) then
               If X mod Prems(I) = 0 then
                    PasPremier
                    Exit Function
               Endif
          endif
     next

     Premier
     redim preserve prems(ubound(prems)+1)
     prems(ubound(prems)) = X
End Function

Par exemple :)

Vlad

signaler à un administrateur
Commentaire de Mindiell le 19/11/2004 16:57:52

Oui, autant initialiser ton tableau Prems avec 2 alors ;o)

signaler à un administrateur
Commentaire de Pingouin le 19/11/2004 19:34:23

Hugh !
Ben ecoute ca fait plaisir de servir a quelque chose de temps a autres.
Sinon je vois que ca a pas mal progressé depuis mon dernier passage !! En effet quelques tests préliminaires ne sont pas a négligés surtout pour de grands nombres. Encore quelques secondes de gagnées !
Sinon je vais essayer de voir si je le retrouve mais il serait intéressant d'implémanter le dernier algorithme a ce sujet qui nous vient de deux mathématiciens indiens qui parait il est une preuve mathématik mais pas forcement bcp plus rapide voire plus lent d'apres ce que j'ai entendu dire. si kkun voit de koi je veux parler kil n'hésite pas...
Voila voila,
Bonne continuation j'essaierais de garder un oeil la dessus ca m'interesse.

signaler à un administrateur
Commentaire de MadM@tt le 19/11/2004 21:09:37

Mindiell > oui comme l'a dit Vlad2i c'est du au modulo, j'y ai meme pas pensé, je vais arranger ça et je penserai au 1 aussi merci

Vlad2i > excellente idée, ça évite de rediviser à chaque fois par tous les nombres meme ceux pas premier. Et dans la meme logique, autant essayer de diviser par tous les nombres premiers jusqu'a la racine du nombre à tester, ce qui donne :

Function TestPremier(x)
     If X mod 2 = 0 then PasPremier


     '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
     ' Le changement est ici
     For I = 0 to int(sqr(ubound(prems)))+1
     '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
          If prems(I)<int(sqr(x)) then
               If X mod Prems(I) = 0 then
                    PasPremier
                    Exit Function
               Endif
          endif
     next

     Premier
     redim preserve prems(ubound(prems)+1)
     prems(ubound(prems)) = X
End Function

Pingouin > si j'ai bien fait la relation tu doit parler des meme bonhomme que parlait Vlad2i plus haut, avec l'intégrale de ramanujan, si tu trouve quelque chose ça peut etre pas mal

merci à vous pour vos commentaire, j'essayerai de modifier la source ce soir

@ +

signaler à un administrateur
Commentaire de vlad2i le 19/11/2004 22:47:54

Désolé l'ami hehe ton implémentation (ton changement) ne sert à rien :)

For I = 0 to int(sqr(ubound(prems)))+1 <= inutile et innefficace - tu comprends je crois que prems contient les nombres premiers trouvés (exemple prems(4) = 13 ) et que j'avais déjà pensé a mettre "If prems(I)<int(sqr(x)) then" une ligne en dessous :)

Bien essayé :)

Par contre, Pingouin : la formule de Ramanujan permet de tester la primalité de nombres de plusieurs millions de chiffres (binaires) en quelques secondes :) donc plus lent c'est discutable :)

Vlad

signaler à un administrateur
Commentaire de MadM@tt le 20/11/2004 00:09:11

Oui effectivement je n'avais pas vu le problème sous cet angle. Par contre avec ta technique, il y a quand meme des inconvénients :
à chaque lanvement du prog il faut charger tous les nombres premiers déjà trouvés (par exemple la je le laisse tourner de temps en temps depuis 2 jours et j'en suis à 100 000 000 ce qui me fait un fichier de sauvegarde de 70 Mo et donc va charger ça en mémoire)
et il faut être sur d'avoir non seulement des nombres vraiments premier mais je pense que l'algorithme ici est bon et aussi avoir trouvé TOUS les nombres premiers avant celui que tu cherche, donc on ne peut pas commencer arbitrairement à une valeur, on est obligé de démarrer de 1 lors de la première utilisation...

Enfin ça fait pas mal de problème pour, je pense, un gain de temps pas énorme

signaler à un administrateur
Commentaire de Mindiell le 20/11/2004 02:18:09

MadMatt, tu peux te rendre compte que la plupart des nombres non premiers sont divisibles par les petits nombres premiers. Donc en créant ton tableau Prems en le faisant contenir les 200 premiers nombres premiers tu élimineras par exemple déjà un grand nombre de nombres pas premiers, et ensuite tu appliques ta méthode brutale par exemple :)

signaler à un administrateur
Commentaire de MadM@tt le 20/11/2004 11:49:03

ah oui c'est vrai ça peut se faire, ça devrait pas prendre beaucoup en mémoire...
je vais y regarder merci

signaler à un administrateur
Commentaire de crazyjoke le 20/11/2004 22:23:03

Pour la racine du nombre a tester, l'expliquation est facilement concevable :

Un nombre, si il n'est pas premier possède au moins un couple de multiples comme celui ci

a*b

avec a>b et a <> 0, alors il possède aussi comme multiple le couple :

b*a

Il faut donc s'arrêter à la racine carrée : quand a=b; toutes les recherches après sont vaines :).

signaler à un administrateur
Commentaire de zoslex le 22/11/2004 11:13:23

Pas mal du tout comme source. Je suis intéressé par la suite (version prenant en compte toutes les améliorations)...

Mais si tu cherches la rapidité, un truc qui accélère vachement : ne pas afficher la liste.
Quand ça tourne, mets
Me.Liste.Visible = False
puis quand ça s'arrête, tu reviens à
Me.Liste.Visible = True

Jusqu'à 170 000, je passe de 15s à 3s.

Continue, tu tiens le bon bout.

signaler à un administrateur
Commentaire de sibi12 le 22/11/2004 16:01:50

Arf j'avais plein de suggestion en regardant ton code mais je vois qu'on te les a deja tte donnée (même l'explication pr la racine carré)..
J'ai fait un programme du style il y a quelque temps mais je ne le retrouve plus j'ai du l'effacer lors du gd nettoyage :(...

Sinon pour l'idée du tableau je l'avais implémenter, ça prens pas mal de place en mémoire mais le gain de temps est interressant. Pour repondre à ta question avec les grand nombre, si tu t'ai déjà interesser à la représentation en memoire tu devrai savoir qu'un entier sous VB est codé sur 32 bit et est signé. la plage est donc de -2^31 à 2^31-1.

La fpu (floating point unit ou coprocesseur arthmetique) permet de jouer avec des entiers sur 64 bit et qui ont dc une plage si on compte seulement les positif jusque 2^64-1 soit +- 1.8 * 10^19. Le problème est que VB n'implémente qu'une version modifier : le Currency. il décale la valeur de 10 000.  je ne sais plus si cette implemantation est signée ou non mais son max ne depassera de toute facon pas 1.8*10^15 et tu va perdre pas mal de temps.

Si tu veux quelque chose efficace pour un eventuelle RSA je te conseille de te tourner vers le C++ et d'utiliser sa librairie ZZ (une tite recherche sur google pour la trouver).

Pour l'algo des 3 indiens c'est utile uniquement pour les très grand nombre et n'est pas trivial a implémenter. la premiere condition à vérifier est que le nombre ne peux pas s'écrire sous la forme n=a^b ou un truc du style.

Il y a un autre algo fort utiliser pour le RSA c'est Miller-Rabin qui se base sur des nombre aléatoire mais il ne donne qu'une probabilité si le nombre est premier. Si le test dit que le nombre n'est pas premier c sur a 100% sinon la probabilité qu'il ne soit pas premier est de 1/4. en repetant le test n fois la probabilité sera de (1/4)^n. on peux donc être amplement satisfait après une 20aine de test (1 chance sur 4^20 soit 1 sur +- 10^12)

voilà si t'as des question je m'etait pas mal renseigner sur les nombre premiers. Le plus rapide est sans doute Erathostene mais inaplicable sur des grand nombre.

signaler à un administrateur
Commentaire de dnob700 le 22/11/2004 17:18:44

mouais, c'est pas du tout optimisé...

Ca sers à rien d'utiliser des double parce qu'il ont 12 ou 13 chiffre de précision mais au delà, tout est perdu et le calculs que tu fait n'ont plus de signification.

Donc il faut le faire avec des long, mais tant que tu ne gère pas de nombres plus grand que la limite des long, on peut dire que tu gère des "petits" nombres.

donc une méthode très rapide pour faire le calcul est tout simplement le crible d'érathostène, tu cré un tableau pour stocker tes nombre, mais pas un tableau horrible comme on te l'a conseillé plus haut, juste un tableau de byte ou chaque bit représente un nombre :
e premier est 3, le 2ième est 5 et ainsi de suite tout les nombre impair sauf 1.

bon, et ensuite, je suppos eque tu conait le principe du crible d'érathostène (tu coche tout les nombre multiple de nombre premer et à la fin, ce qu'il reste est les nombre premier.

signaler à un administrateur
Commentaire de Mindiell le 22/11/2004 17:42:13

un tableau représentant tous les impairs ?

Le problème, c'est que s'il veut diviser rapidement son nombre a tester par les 100 premiers "nombres premiers", il doit les retrouver, non ? L'avantage du tableau "horrible" c'est qu'il contient les 100 premiers :o)

Pour Erathostene, tu pourrais mieux expliquer ? J'ai pas le temps de faire de recherche, mais j'aimerais comprendre le truc quand meme ;o)

signaler à un administrateur
Commentaire de dnob700 le 22/11/2004 17:53:09

ben non, mon tableau on s'en sers pour faire le croble :

disons que le premier bit vaut 3.

tu parcours donc le tableau de 3 en 3 en mettant tout les octets à zéro (il faut qu'avant ça, tout est été initialisé à 1 ou le contraire).
En parcourant le tableau de 3 en 3, tu passe les nombre de six en six, mais c'est pas grave puice que un sur deux est pair.

quand c'est fini (c'est a dire quand t'arrive au bout de ton tableau).
tu rapars du début et tu cherche le premier éléments qui soit à 1.
ici, ça sera le deuxième, alors tu recherche sa valeur (pour l'élément x (le premier est 1et non pas 0) c'est (x*2+1)) et tu pacours le tableau de x*2+1 en x*2+1 donc là de 5 en 5, mettant tout à 0.

et on recommence, tu cheche le premier qui soit à 1 et tu mets à zéro tout ces multiple.

à la fin, il ne te reste à un que les nombre premier.

avec cette méthode j'ai calculé les 100 000 000 premier nombre premier non pas un 2 jours mais en 2 minutes a peu près (bon, avec un noyau pour la manipulation du tableau en C, mais même en pure VB, ça sera bcp plus rapide).

signaler à un administrateur
Commentaire de Mindiell le 22/11/2004 18:01:49

Donc un tableau de 100 millions de bits ? Marrant comme procédé, je connaissais pas.

Par contre, pour tester si un grand nombre est premier ou pas, ca marche plus du tout (ou alors faut y aller)...

signaler à un administrateur
Commentaire de dnob700 le 22/11/2004 18:15:13

100 milions de bit c'est que 12 méga octets soit moins que les 70 necessaire pour stocker les nombres en dur (j'utilise les chiffres donné plus haut par mad&matt)

de toute façons, à moins de compressé à la volée c'est la meilleure méthode pour sauvegarder les premier nombre premier (jusqu'a 100 milliosn c'est que les premier) après, quand leur consistance devient trop faible il faut envisager autre chose.

mais un tableau de double, dynamique qui plus est, est vraiment une abération (dans la même mémoire on ne mets même pas 2 millions de nombre premier).

signaler à un administrateur
Commentaire de sibi12 le 22/11/2004 18:18:26

Non comme j'ai dit Erathostene est inapplicable pour les grand nombre.  Une source sur cppfrance implementai vraiment bien erathostene mais je tombe plus dessus... si je la retrouve je vous fais signe

signaler à un administrateur
Commentaire de dnob700 le 22/11/2004 18:20:52

oui, mais 100 millions, c'est un petit nombre.

sauf a savoir si 86 125 647 est un nombre premier sans calculer les autres, là, ça sers à rien.

signaler à un administrateur
Commentaire de Mindiell le 22/11/2004 18:22:20

On est d'accord pour le stock de tous les nombres premiers, ca devient délirant. mais si c'était pour accélérer la fonction "est-ce un nombre premier", je pense que mon idée peut donner un compromis intéressant (tableau de 100 voire 200 premiers nombres premiers)...

Ceci dit, le crible d'erathostene m'intrigue, je vais me pencher dessus :)

signaler à un administrateur
Commentaire de vlad2i le 22/11/2004 18:27:40

Les cribles ... absolument inefficaces ...

Le crible d'Eratostène consiste a préparer un tableau et a éliminer les nombres en fonction des Modulo ... ce qui revient a faire le code "brutal" que l'on avait au début, a savoir

For I = 0 to sqr(x)
If x mod I = 0 then x pas premier
...

Maintenant, pour le stock, il faut prendre en compte que si le but du code n'est que de décorer... autant ne pas se trouer les méninges... maintenant si tu veux que ca soit utile, tu peux adapter ton code pour des recherches sur les très très grands nombres premiers (sans me faire de la pub, j'ai fais un module qui permet de gérer de tels entiers et que tu pourrais utiliser assez facilement)

Accélérer la recherche au dela me semble difficile, au vu des limitations (pratiques) de VB...

Mais je ne doute pas que qqn y arrive quand meme :)

Vlad

signaler à un administrateur
Commentaire de Mindiell le 22/11/2004 18:29:30

86 125 647 est divisble par 3... hum ;op

signaler à un administrateur
Commentaire de Pingouin le 22/11/2004 18:56:34

Ué en effet la formule de Ramanujan est rapide autant pour moi (ptet moins que les algo probabiliste il me semble mais bon) mais c vrai que c'est pas evident a implementer.
Par contre a mon avis le crible c'est pas la peine a mon avis c'est pas efficace pour de grands nombres.
Mais au fait tant qu'il y est ya moyen d'etendre le prog a la factorisation en facteurs premiers non ? :-) (histoire d'élargir le débat ... koike 36 commentaires c deja pas mal lol)

Pingouin

signaler à un administrateur
Commentaire de MadM@tt le 22/11/2004 21:48:11

Oula ça ma fait bcp de mails en un jour ça, ne paniquont pas
zoslex > yes bonne idée, vu le gain de temps je vais vite mettre ça au point
Pour les autres à propos des grands nombres j'ai encore jamais regardé mais je me pencherai bien dessus
Sinon au niveau du crible d'erastosthene et patati et patata vous etes sur que ça peut permettre de gagner du temps ? Parce que ça a l'air compliqué et pour moi qui dit compliqué du beaucoup de calculs donc un temps long, enfin je dit ça sans avoir jamais testé quoi....

sinon merci à tous pour vos commentaires

PS : j'essayerai bien de mettre cette source en C++ ou C#, mais est ce que le C# est aussi rapide que le C++ ?

signaler à un administrateur
Commentaire de vlad2i le 22/11/2004 21:50:40

MadMatt>Lit mon commentaire sur Eratostene (qui précise que ca ne fera que le ralentir ton programme)

Vlad :)

signaler à un administrateur
Commentaire de MadM@tt le 22/11/2004 21:58:30

Oui j'ai vu ça mais j'entendais aussi la formule de Ramanujan et le tableau des 100 ou 200 nombres premiers dans le lot
Mais le problème des grands nombres reste encore je vais essayer de regarder ça si je trouve du temps

signaler à un administrateur
Commentaire de sibi12 le 22/11/2004 22:37:02

Vlad2i > Erathostene est surtout rapide pour avoir tout le nombre premier de 1 à n.
il est surtout plus rapide car on ne fait aucune division et 5 6 addition seront tjs plus rapide que 1 modulo(le modulo a la meme instruction machine que la division) il y aussi quelque rotation pour implementer le tableau decrit par dnob700 mais c'est 1 cycle aussi comme l'addition.

sinon si c'est juste pour verifier un nombre ca vaut pas la peine (une idée sur le moment coupler erathostene avec la methode classique : on fait un tableau de sqrt(n)/2 bits et avant de mettre à un les nombre non premier on verifie si il est diviseur de n... à creuser mais fort limité)

MadM@tt > logiquement C# et C++ devrait etre aussi rapide l'un que l'autre mais je n'en suis pas convaincu. l'ennui du C# est qu'il y a plein de truc qu'on ne contrôle pas comme la memoire, le garbage collector peux se declencher à n'importe quel moment, il faut passer en mode non proteger pour gere les pointeurs,... je pense qu'il vaux mieu faire en C++ et au besoin appeler une Dll d'un programme C#

signaler à un administrateur
Commentaire de vlad2i le 22/11/2004 22:46:40

"Vlad2i > Erathostene est surtout rapide pour avoir tout le nombre premier de 1 à n.
il est surtout plus rapide car on ne fait aucune division et 5 6 addition seront tjs plus rapide que 1 modulo(le modulo a la meme instruction machine que la division)"

Eratostene consiste a éliminer les nombres en fonctions des modulos, pas en fonction des additions... on ne fait pas d'additions me semble-t-il

Enfin si ma mémoire n'est pas encore totalement décrépie...

Vlad

signaler à un administrateur
Commentaire de dnob700 le 22/11/2004 23:27:51

C# et C++ ne sont certainement pas aussi rapide.

le C# est compilé pour la CLR, c'est a dire exactement la même chose que du VB (donc il a la même vitesse, d'ailleur de VB.NET est un peu plus lent que du VB6).

Par contre, du vrai C++, compilé pour win32 (ou linux) est plusieurs centaines (peut être seulement plusieurs dizaine, c'est assez dificile de faire des test précis car ça n'a pas grand chose à voir) de fois plus rapide peut-être.

signaler à un administrateur
Commentaire de MadM@tt le 23/11/2004 00:05:25

zoslex > Ton idée de ne pas ajouter dans la liste les nombres trouvés n'apporte aucun gain de temps (visible). En effet tu a surement du supprimer la ligne qui ajoutait le nombre à la liste si il était premier afin de voir si c'était plus rapide, mais ce n'est pas le fait de l'ajouter dans la liste qui prend du temps, mais plutot de savoir s'il est premier ou pas.
J'ai essayé plusieurs méthode pour stocker les resultats dans une chaine de caractère, un tableau, mais pas de changement de vitesse significatif.... à moins que j'ai mal compris ce que tu voulais dire....
mais merci d'avoir proposé l'idée quand meme
@ +

signaler à un administrateur
Commentaire de MadM@tt le 23/11/2004 00:06:48

Ps : j'en suis à un fichier de 310 Mo lol
je suis allé jusqu'à un nombre qui s'écrit avec 8 chiffres, dans les 500 000 000 (500 millions) c'est pas mal non ?
mais ça reste bien loin des supercalculateurs

signaler à un administrateur
Commentaire de Mindiell le 23/11/2004 00:16:53

désolé dnob700, et on n'est pas la pour lancer une polémique, mais de nos jours, les compilateurs donnent des vitesses équivalentes...

MadM@tt, en effet, ne pas utiliser ta liste de gauche accélère de beaucoup le calcul quand tu en fais un long...A priori, ca le fait même planter au bout d'un moment (Textbox trop petite...)

signaler à un administrateur
Commentaire de sibi12 le 23/11/2004 16:20:40

vlad2i > je pense que tu dois confondre erathostene avec autre chose... Il n'y a aucun modulo.

tu prend le premier nombre premier c a d 2 (mais on peux aisément le sauter pour gagner en performance) et tu fais plus 2 et tu coche le nombre obtenu c a d 4 puis 4 + 2 et tu coche dc le 6 tu continue juske n ensuite tu prends le premier nombre qui n'est pas cocher c a d 3 tu fait + 3 tu coche le 6 (il est deja cocher d'ou l'interet de sauter le 2 : cfr dnob700 : "En parcourant le tableau de 3 en 3, tu passe les nombre de six en six, mais c'est pas grave puice que un sur deux est pair")

Il n'y a donc aucun modulo/division même pas une simple multiplication !!!sachant qu'une addition s'effectue en 1 cycle comme toute les autres instruction de l'algorithme (mise à part les accès memoire qui eux sont plutôt fréquent. on doit charger 4 octet tout les 64 nombre si le programme est bien optimiser) on comprend pourquoi il est si rapide.

dnob700 > Le CLR et le run-time VB n'ont absolument rien en commun ! Tu te trompes. Le CLR  prend du code CIL et le traduit en code machine, avec une aussi bonne optimisation que du C++ (pour autant que le programme soit bien écrit), lors de la première exécution d'une fonction, ensuite la fonction est stockée en langage machine et s'exécute comme une application normale (en gros).

En VB c'est complètement différent t'as ton programme en langage machine mais 9 instructions sur 10 font appelle a une dll ce qui ralenti sensiblement ton code surtout que beaucoup d'appelle utilise le protocole COM dont la lenteur des appels de fonction est bien réputé. et même pour les appel qui n'utilise pas COM, passé les arguments sur la pile pour faire une addition n'est pas skon peux trouver de mieux niveau performance.

Je ne pense donc pas qu'on puisse dire que VB soit plus rapide qu'un programme .Net à part peut-être au premier appel de la fonction (au besoin on peut utiliser sgen il me semble pour compiler le CIL en langage machine)

signaler à un administrateur
Commentaire de zoslex le 23/11/2004 17:29:40

Je ne vois pas ce que tu aurais pu mal comprendre.
Le gain est largment visible... Je pense que la perte est constante puisque dû à la perte de temps d'afficher en permanence.
Ce que j'ai changé :


' Procédure qui cherche les nombres premiers
Private Function CherchePremier()
    Dim Number As Double

    'zoslex
    Me.Liste.Visible = False
    
    Me.Caption = "Recherche ... - MadMatt"


puis à la fin de la fonction :


    Me.Caption = "Fini !"
    
    'zoslex
    Me.Liste.Visible = True
    
End Function


Merci de dire si tu vois mieux, ou si tu ne vois toujours rien.
Préviens si tu mets à jour, que je télécharge la dernière version, merci :)

signaler à un administrateur
Commentaire de vlad2i le 23/11/2004 19:03:12

sibi12> C'était donc bien d'eratostene que je parlais : tu m'a fais une excellente explication de ce qu'est un modulo :) (qui est par ailleurs dans le cas de certains nombres bien plus rapide que l'addition successive :p)

De plus, il a parfaitement raison de dire que le CLR compile des programmes a peu près aussi rapides que VB6

MadMatt & zoslex> Encore mieux : essayez l'api LockWindowUpdate :)

LockWindowUpdate list1.hWnd
'remplissage
...
LockWindowUpdate 0
list1.Refresh

Evidemment, il faut faire
LockWindowUpdate 0
list1.Refresh

de temps en temps (exemple tous les 10000 éléments ajoutés) pour que ton prog ne plante pas

Vlad

signaler à un administrateur
Commentaire de sibi12 le 23/11/2004 19:24:08

vlad2i > je ne comprend pas pkoi tu dis que la methode classique en verifiant si tout les nombres de 1 à n sont premier est plus rapide... chaque addition te permet de verifier si un nombre est premier. on cherche pas le modulo, c'est pas le nombre d'addition qu'on cherche. je reste persuader que pour trouver tout les nombre premier de 1 à n c le plus rapide (pour une valeur raisonnable de n sinon les nombre premier s'espace de plus en plus et beaucoup d'addition ne serve plus a rien)

je me disai la même chose du CLR au debut mais en y regardant de plus près le jit fais qu'on a un code plus ou moins aussi rapide que du C++. l'idéal pour le verifier serai de faire un sgen sur un prog .Net et voir

signaler à un administrateur
Commentaire de vlad2i le 23/11/2004 19:28:26

je crois que tu n'as pas compris...

Chercher tous les nombres premiers de 1 à n... c'est exactement ce que fait ce programme

Maintenant, la méthode du crible d'eratostene consiste a barrer tous les éléments d'un tableau périodiquement (a savoir par exemple, tous les multiples de 17) ce qui revient mathématiquement à un modulo, qui est, de plus très rapide.

Si x mod y = 0, alors x est un multiple de y , donc on le barre car un premier ne peut etre un multiple :)

Quant aux compilations, les vitesses dépendent tant de la machine que du programme que de la méthode que du moment

Si c'est pas flagremment différent, considère que c'est pareil

Vlad

signaler à un administrateur
Commentaire de dnob700 le 23/11/2004 20:07:51

je me suis mal exprimé, mais le VB.NET compile pour le clr aussi, et non plus pour la machine virtuel visual basic comme le faisait VB6, c'est donc exactement la même chose que du C#

ce qui n'est par le cas du C++ compilé pour win32 (faites l'essai, je ne veut pas lancer de polémique, mais c'est vraiment plus rapide).

pour ce qui est des nombres premiers, il y a ces deux pdf qui sont très bon si vous êtes un peu interessé par de la théorie :

http://perso.wanadoo.fr/sectionpc/tpe_cryptage/crypto/pdfs/primalite.pdf (en français)

http://perso.wanadoo.fr/sectionpc/tpe_cryptage/crypto/pdfs/primality.pdf (en anglais)

signaler à un administrateur
Commentaire de sibi12 le 23/11/2004 22:00:51

Oui je vois ce que tu veux dire...

mais il te faut plusieurs essais avant de trouver de ton y. alors qu'avec erathosthene tu trouve toute une volée d'x d'un seul coup l'ennui est que parfois il sont deja cocher. enfin j'ai jms trop aimé erathosthene et j'ai jms fait de test mais jme suis tjs di ke ça devait etre plus rapide... têtre que je me trompe.. je n'en sais rien.

"Quant aux compilations, les vitesses dépendent tant de la machine que du programme que de la méthode que du moment"

Je vois pas où tu veux en venir.. même si je reconnais que ce sera jms aussi rapide que du C++ (quoique en theorie ça devrait après la première compilation mais je me suis vite rendu compte du contraire), ça n'equivaut quand même pas à du VB vu la lourdeur des appels de fonction.

signaler à un administrateur
Commentaire de MadM@tt le 23/11/2004 22:08:54

zoslex > oui je n'avais pas compris, j'ai essayé ton code mais je n'ai pas trouvé d'amélioration vraiment flagrante, tu trouve vraiment que ça va plus vite toi ??

Vlad > Je vais tester avec LockWindowUpdate

dnob700 > merci pour tes pdf je vais y faire un tour

vous savez que tout les soirs ma boite hotmail est prete à exploser avec tous les commentaires que vous envoyez... 20 mails par ci, 15 par la
Mais continuez !!! On avance !

@ + tous

signaler à un administrateur
Commentaire de Mindiell le 23/11/2004 22:24:09

A propos, le troll sur qui compile plus vite et qui s'execute plus vite, merci de le continuer ailleurs :)

signaler à un administrateur
Commentaire de zoslex le 24/11/2004 14:23:47

J'ai poussé un peu plus loin les investigations. Cacher la liste me fait gagner 40% du temps de calcul.

Je m'explique... Je suis arrivé aux alentours de 150 000 000 avec un fichier de 92 Mo. Le temps est en deux parties : le calcul et la sauvegarde.
- Le calcul avec mise dans la liste : la cacher avec Me.Liste.Visible donne 40% de gain (6s au lieu de 10s).
- La sauvegarde : ça me prend 35s de faire Save.

Alors, avec autant de temps pris pour la mise sur disque dur par rapport au calcul à proprement parler, je me demandais le pourquoi du 99 999.

Ne peut-on pas augmenter ce nombre ? Quelle est sa limite ?

signaler à un administrateur
Commentaire de Mindiell le 24/11/2004 14:29:48

Question qui peut paraitre stupide :
- Si on calcule 150 Millions de nombres premiers, quel est l'intérêt de les afficher ?

signaler à un administrateur
Commentaire de MadM@tt le 24/11/2004 17:26:47

2 questions très pertinentes comme dirai mon prof de filo lol

Mindiell > Tu aimerais un programme qui travaille et que tu ne puisse pas voir le résultat, enfin c'est vrai que je pourrai ajouter une option pour cacher ou pas la liste, je vais étudier ça

zoslex > Comme je viens de le dire, je vais donc ajouter l'option pour cacher ou montrer la liste, comme ça si on laisse tourner le prog pendant 1h quand on est pas la, autant cacher la liste, et si on veut on  pourra la voir
Sinon pour ta question à propos du nombre 99 999, la réponse est simple :
c'est un nombre pris au hasard, ni trop grand ni trop petit, je m'explique. Au départ le programme calculait comme un fou et mettait tout dans la listbox, et il sauvegardait quand on l'arretai. Sauf que si ton ordi plantait tes progrès étaient effacés, et au bout d'un moment ça commence à prendre de la place en mémoire, ce qui peut ralentir encore + le programme (et en + au moins tu voit l'avancement, alors qu'avant tu ne voyais pas apparaitre les nouveau nombres).
C'est pourquoi tous les 99 999 nombres, tout est rafraichit, on avance par étape en fait, et bien sur ce nombre peut etre changé, je l'ai pris pour pas que le rafraichissement soit trop fréquent, ni trop espacé.

voilà

signaler à un administrateur
Commentaire de Mindiell le 24/11/2004 17:51:37

Non, ce que je veux dire c'est : "Quel est l'intérêt d'afficher la liste pendant la recherche ?" comme tout est dans un fichier à la fin, ca reste visualisable.

signaler à un administrateur
Commentaire de MadM@tt le 24/11/2004 18:22:55

Mon fichier fait 320 Mo, j'ai voulu l'ouvrir mais je n'avais pas fait attention à la taille et ça ma mis ma mémoire vive à 0% libre et mon fichier SWAP à 10 % (et encore j'ai terminé le processus).
Comme quoi au bout d'un moment tout tes résultats, il ne vaut mieux pas avoir envie de les voir tous d'un coup :(

signaler à un administrateur
Commentaire de zoslex le 24/11/2004 21:26:08

Pour s'instruire sur tout ce qui concerne les nombres premiers :p
http://www.bibmath.net/dico/index.php3?action=rub&quoi=603
Pour créer ou vérifier (probalistiquement) un nombre premier :
http://www.bibmath.net/crypto/complements/gdspremiers.php3

MadM@tt > comment vas-tu faire pour regarder dans un fichier texte decette taille-là alors ?

signaler à un administrateur
Commentaire de MadM@tt le 24/11/2004 21:33:20

mdr bonne question, je pourrai peut-etre essayer de faire un lecteur spécial, qui ne lit que les premieres lignes, puis quand on descend ça charge les suivantes, enfin je ne sais pas encore...

signaler à un administrateur
Commentaire de BruNews le 24/11/2004 22:25:11 administrateur CS

MadM@tt > ça va etre mortel pour les performances de faire de la lecture dans un fichier ou chaque info est sur une ligne et de plus les sauts de ligne bouffent des octets pour rien.
Voila une idee qui te fait deja gagner 1 octet par nombre ecrit dans le fichier (je fais cas ou tes nombres ne sont pas plus grands que 255 caracteres), il faut indexer en ecrivant 1 octet devant chaque nbr (en binaire brut) indiquant sa longueur et ecrire tout a la suite sans saut de ligne. A la lecture on sait exact ou aller chercher le prochain et on peut donc y pointer direct.
Ensuite bien sur aucune idee comment transcrire cela en VB, a vous de voir. Pour autant c'est je pense ainsi que je ferais en C et devrait etre tres rapide.

signaler à un administrateur
Commentaire de BruNews le 24/11/2004 22:35:57 administrateur CS

RECTIF: suffit d'un ZERO binaire au cul de chaque nbr et le tour est joue pour une lecture en tres haute performance, on gagne toujours 1 octet par nbr au niveau du fichier. Faudrait par contre pouvoir utiliser les pointeurs, alors ecris toi une dll C pour faire la lecture....

signaler à un administrateur
Commentaire de sibi12 le 24/11/2004 23:49:10

Pourquoi ne pas simplement codé en brut un tableau de long ?
Tu peux ensuite lire le fichier on ne peux plus simplement en chargeant les donnée dans un tableau de long.

de toute maniere tu va avoir du mal pour gerer des nombre à plus de 32 bit en VB.
l'ennui est si tu vx qd même gerer ces nombres

signaler à un administrateur
Commentaire de BruNews le 25/11/2004 00:01:33 administrateur CS

deja que les Long de VB sont sur 31 bits, il ira pas loin dans l'enumeration en ce cas, big probleme...

signaler à un administrateur
Commentaire de BruNews le 25/11/2004 00:08:18 administrateur CS

ah mais je n'avais pas vu que tu utilisais des 'Double'.
Comme le signale dnob700, c'est inutile car tu recuperes nimporte quoi. Le double en 64 bits ne garde de precision que sur une plage de 20 chiffres maxi, au dela on entre en virgule flottante a 'double IMprecision', alors tout ceci est totalement inutile.

signaler à un administrateur
Commentaire de Mindiell le 25/11/2004 00:27:48

Perso je stockerais 1 million de chiffres par fichier en changeant de fichier de temps en temps :)

signaler à un administrateur
Commentaire de MadM@tt le 25/11/2004 17:44:47

BruNews > Au niveau des double très juste, je vais changer ça en long

Pour le problème des fichiers je n'ai pas le courage de développer un truc entier rien que pour les ouvrir, je pense que la solution de Mindiell est pas mal, dans un sous-dossier
Je vais voir ça, mais je pense faire avec les Mo, c'est à dire que je pourrai faire 2Mo par 2Mo, ça évite les mauvaises surprises et le programme sera plus simple

merci pour les idées

signaler à un administrateur
Commentaire de Pingouin le 25/11/2004 20:19:00

Ah me'de alors j'etais passé rien que pour te proposer de découper en plusieurs fichiers de petite taille... Bon ben c raté pour ce coup ci lol.
Et pourquoi pas proposer une option pour ne stocker kun certain nombre, parmi les derniers...
Sinon je ne suis pas un spécialiste mais vous croyez qu'il y a moyen de travailler sur des strings pour s'affranchir de la limite de taille des long ? Mais c sur ke la il te faudrait faire toi meme les opérations .... C'est ptet a voir non ?

signaler à un administrateur
Commentaire de MadM@tt le 25/11/2004 20:44:44

je crois que c'est justement ça le principe des grands nombres évoqués plus haut.... Et il ya déjà pas mal de source la dessus sur vbfrance, pourquoi s'embeter lol

signaler à un administrateur
Commentaire de sibi12 le 26/11/2004 17:14:45

Ouch des string tu va perdre enormement en rapidité. je te conseil plutôt un tableau de long ou de byte. Mais si tu veux quelque chose de vraiment efficace ==> C++

signaler à un administrateur
Commentaire de Mindiell le 26/11/2004 17:25:29

un tableau de long... ???
un tableau d'octets surtout ! donc comme une chaine de caracteres, mais pas un type String. En effet, le C est mieux pour ca (pas forcement besoin du C++)

Pour les nombres premiers, le record est aux alentours de 7 millions de chiffres. L'EFF offre 100 000 dollars au premier découvreur d'un nombre premier à 10 millions de chiffres... Sur ce, bon courage ;o)

signaler à un administrateur
Commentaire de sibi12 le 26/11/2004 19:55:17

bah un tableau de long pour jouer directement sur 4 octets les operations sont les meme que ce soit 8 ou 32 bit ca accelere les calculs.

ui C/C++ idem ;-)

J'avais déjà entendu parler de ca. ca fait qd même 33Mo rien que pour stocker le nombre !! mais il y a des technique beaucoup plus sofistiquer style champ de mersene et tout ca...

signaler à un administrateur
Commentaire de MadM@tt le 26/11/2004 21:46:54

Olalalalalalalalalalalala impressionant !
10 millions de chiffres ça fait rever quand meme....
ça devient plus tentant l'histoire des grands nombres, je me lancerai bien dedans pour voir.... Si ce week end j'ai le temps, j'étudierai la question, en tout cas je ne mettrai pas la source à jour ici mais j'en posterai une nouvelle car les sources n'auront rien à voir (encore faut-il que j'y arrive)
sinon merci à vous tous pour vos commentaires.

faites chauffer le clavier...
@ +

signaler à un administrateur
Commentaire de Mindiell le 27/11/2004 05:05:29

sibi12> un tableau de long au lieu d'un tableau d'octet c'est de la place de perdue, non ? un octet suffit a stocker nu chiffre entre 0 et 9.

Ces fameux chiffres énormes sont des nombres de Mersenne, donc pour les stocker pas besoin de grand chose :) ca donne ca : Mn = 2n - 1 (comprendre 2 puissance n), il suffit donc de connaitre n. Malheureusement ils ne sont pas tous premiers :o)

signaler à un administrateur
Commentaire de MadM@tt le 27/11/2004 11:52:36

Sur le site j'ai trouvé pas mal de fonctions math sur les grands nombres mais elles sont toutes avec des chaines de caractères, ça revient à ce que vous avez dit avec un octet par chiffre...
Seulement je me disais, un octet peut stocker 256 valeures (avec le 0 ça fait 255), alors pourquoi utiliser que 10. ça serait mieux de faire des fonctions dont l'octet stocke 2 chiffres non ? donc de 00 à 99
comme ça ça diminue de moitié l'espace de stockage ?

par contre la ou ça serait difficile c'est au niveau des calculs pour incrémenter à chaque fois d'un.
remarque ça doit etre faisable

signaler à un administrateur
Commentaire de Pingouin le 27/11/2004 13:25:48

Les nombres de Mersenne ne sont pas les seuls nombres premiers a plusieurs millions de chiffres. Je crois que l'un des plus grand doit s'ecrire 2^61-1 ou un truc dans ce genre.
MadM@tt >> Si tu arrives a construire un ensemble de fonctions mathematiques de ce type moi je m'emballe. Ce qui est dommage c'est que je ne suis pas sur d'avoir le temps suffisant pour te proposer mon aide mais on ne sait jms donc si tu as besoin n'hésites pas...
bon courage

Pingouin

signaler à un administrateur
Commentaire de sibi12 le 27/11/2004 15:26:56

2^61 -1 ??? non on est beaucoup plus loin : http://membres.lycos.fr/villemingerard/Premier/record.htm

2^24 036 583 -1 (oui il y a un problème 240 36 583 c'est pas 240 millions)

MadMatt > La base 2 est tellement plus simple le seul problème est le passage en string mais ce n'est pas si compliquer que ça n'y parrait, suffit de jouer avec des mod 10 et int(n/10).
Passé à 2 nombre par caractère ne va pas tant complexifier le code tu va devoir chaque fois passé par un Int(Asc(Mid(var,i,1)) / 10) ou Asc(Mid(var,i,1)) mod 10 et puis par Chr(10*N1+N2) puis convertir en string.

tu peux pas me dire de quel source tu partirais pour gerer tes nombres ?

signaler à un administrateur
Commentaire de Mindiell le 27/11/2004 15:31:39

Euh pingouin, le plus grand nombre premier est de la forme 2^n-1 et ca c'est la forme de Mersenne.
Et celui dont je parlais vaut ca : 2^24 036 583 -1

Oui, oui, 2 puissance 24 millions :o)

signaler à un administrateur
Commentaire de Pingouin le 27/11/2004 16:19:28

Zinkiétez pas un de ces jours j'apprendrai a faire un copier coller proprement c promis sisi ... c sur que meme ma calculatrice me le fait 2^61 alors bon pour un record...bref j'suis pas doué

Mindiell> ce que je voulais dire c que tous les nbx de Mersenne ne sont pas premiers (n=4 si je ne dis pas de betises ) et que tous les nombres premiers ne sont pas des nombres de Mersenne (17 par exemple non ?) Bref.

Dis si Madmatt gagne le fameux prix 'croyez kil va partager comme il partage ses sources ? ;Þ

signaler à un administrateur
Commentaire de sibi12 le 27/11/2004 16:34:32

Si si tout les nombre de mersenne sont premier !!! mais on ne les connait pas tous.

le theorme dit :

M = 2^p - 1

Si M est premier

alors p est premier

http://membres.lycos.fr/villemingerard/Premier/record.htm#Mersenne

signaler à un administrateur
Commentaire de sibi12 le 27/11/2004 16:36:19

Oups j'ai cliquer trop vite...

les nombres de mersenne sont les M qui sont premier mais le theoreme ne dit pas que la reciproque est vraie.

signaler à un administrateur
Commentaire de Pingouin le 27/11/2004 18:57:14

Euh ouais je comprend pas bien ton dernier post. Mais avec p=4 ca me donne 2^4=16 et donc M=2^4-1=15=5*3 ca m'a tout l'air d'un nombre de Mersenne mais pas d'un nombre premier donc a priori tous ne sont pas premiers.
Par contre si p est premier la oui je ne dis pas. Par contre tu as sans doute vu sur ce site que si on a un nombre de Mersenne on en a immédiatement un parfait !! Kan est ce que ce code (qui recueille un sacré paquet de commentaires kanm^m!!) détectera les nombres de Mersenne ?

signaler à un administrateur
Commentaire de MadM@tt le 27/11/2004 19:46:25

oui mais moi jy comprend rien au nombres de mersenne lol, sinon pour les grands nombres la seule amélioration que la technique de 2 chiffres par octets c'est que ça prend moins de place, mais comme ça demande + de calculs laissons tomber

signaler à un administrateur
Commentaire de Mindiell le 27/11/2004 19:57:58

Alors pour info, les nombres de Mersenne sont de la forme Mp = 2^p -1 avec p premier...
et tous les nombres de Mersenne ne sont pas premiers : M11 ne l'est pas.

Volia...

signaler à un administrateur
Commentaire de sibi12 le 27/11/2004 20:10:14

un nombre de mersenne est un nombre premier qui est de la forme M=2^p -1 donc par definition il est premier mais le theoreme ne dit pas que ca marche pour tout p premier. par ex 2^11 = 2 047 = 23 x 89.

Oui oui je sais mais c'est encore plus difficile de trouver un nombre parfait surtout que le nombre parfait correspondant à 2^p - 1 est 2^(p-1)*((2^p)-1) et est donc encore plus grand (+- égale au carré).
Je viens de faire le calcul pour le fun pour un nombre parfait de la forme n=2^(p-1)*((2^p)-1), M=sqrt(n+1)-1

Niveau rapidité utilise la base 2 l'addition la soustraction et la multiplication sont vraiment triviale la division et le modulo doivent resté raisonnable. je commence à être tenté.

en fait le modulo et la division se complique quand le les operande n'ont pas le même ordre de grandeur mais en tapant ça dans une boucle c'est pas la mort.

signaler à un administrateur
Commentaire de Mindiell le 27/11/2004 20:34:16

Oui, euh donc un Mersenne n'est pas forcément premier, c'est ca ? on est ok ? :o)

Pour les longs chiffres, je vais tenter une petite classe en C, ca me parait beaucoup plus pratique :o)

signaler à un administrateur
Commentaire de sibi12 le 27/11/2004 20:41:52

Heu oui dsl j'avais pas vu ton post juste avant. il est premier par definition mais le theroeme ne dit pas lequel l'est et lequel ne l'est pas. on peux donc voir ça comme ça oui.

Oui le C est le mieux mais c'est possible de tout codé en VB. Je te conseille alors d'utiliser la bibliotheque NTL et dans cet lib le type ZZ. http://shoup.net/ntl/

signaler à un administrateur
Commentaire de MadM@tt le 28/11/2004 12:19:46

Ah ouai merci j'ai compris l'histoire des nombres de Mersenne, mais alors à quoi ils servent ? à trouver des nombres premiers ?

signaler à un administrateur
Commentaire de Mindiell le 28/11/2004 12:27:03

Ben en fait, a l'antiquite, on supposait qu'ils etaient peut-etre tous premiers, mais entre 1700 et 1900, on s'est rendu compte que non. Il existe aussi les nombres de la forme : 2^n +1, qui sont dits de Fermat je crois... Et qui, bien sur, ne sont pas tous premiers (ca serait trop simple :o) )

signaler à un administrateur
Commentaire de MadM@tt le 28/11/2004 12:30:47

ah ouai donc on pourrait se servir de ça pour trouver des nombres premiers c'est ça ? par exemple en faisant un programme qui calcule un nombre de mersenne et vérifie ensuite s'il est premier, on aurait beaucoup plus de chance d'en trouver qu'en faisant une recherche exhaustive.

signaler à un administrateur
Commentaire de Pingouin le 28/11/2004 12:41:22

Ouais mais tu n'aurais pas une liste de tous les nombres premiers mais si ce que tu cherches c'est un très grand nombre premier alors la oui ca va peut etre plus vite koike  on tape vite dans les tres tres grand nombres et donc ya pas mal de calcul.
Ya un projet en ligne style Seti@Home qui fait ca http://mersenne.org/primenet si ca vous tente...

signaler à un administrateur
Commentaire de sibi12 le 28/11/2004 12:52:24

C'est ça en fait ces nombre ont plus de chance d'etre premier qu'un nombre aux hasard mais apparement plus on mon te ds les valeur plus ils sont rare. on pense que 2^24 036 583 -1 est le 41 eme !!!

je viens de penser à un truc. si un nombre de mersenne est de la forme 2^p-1 on est pas obliger de le representer en mémoire puisque en base 2 une suite de p 1. il doit y avoire moyen d'extrapoler quelque chose de ça pour faire des modulo rapide...par ex :

(je fait les calculs en live :p)

mod 3 : 0 si n est pair  1 si impair donc c = p mod 2
mod 5 : si on prend p =1,2,3,... c une suite de 1,3,2,0, 1,3,2,0,....
mod 7 : 1,3,0, 1,3,0,...

en fait si on arrive à montrer que c'est tjs une suite suffit de cherche p mod premier_0_de_la_suite. si c'est 0 n n'est pas premier sinon on continue la boucle !!!

d'accord je l'accorde c'est pas super simple à coder mais on pourrait chercher mathematiquement avant de coder à la bourrin

signaler à un administrateur
Commentaire de MadM@tt le 28/11/2004 12:54:09

bah faudra voir, mais comme tu la dit ce que je préfererai faire c'est simplement trouver des grands nombres premiers, donc autant utiliser ça.
Et c'est quoi l'histoire des nombres parfaits ? c'est ceux qui s'écrivent sous la forme :
n=2^(p-1)*((2^p)-1) ??

signaler à un administrateur
Commentaire de Mindiell le 28/11/2004 13:48:56

sibi12> Si ca peut t'aider, n'oublie pas que les nombres de la forme 2^p -1 sont, en binaires, une suite de p bits tous à 1. Pour les Mersennes, ca sera donc une suite de p bits avec p premier :
1
11
111
11111
1111111
11111111111 (11, pas premier)
etc... :o)

signaler à un administrateur
Commentaire de sibi12 le 28/11/2004 14:09:01

un nombre parfait est un nombre dont la somme des facteurs premier est égale à 2 fois le nombre : http://membres.lycos.fr/villemingerard/Premier/introduc.htm en fin de page
ou plus complet : http://membres.lycos.fr/villemingerard/Decompos/ParfDebu.htm

signaler à un administrateur
Commentaire de Mindiell le 28/11/2004 14:10:03

oups, bien entendu, 1 n'est pas bon :o)

signaler à un administrateur
Commentaire de Mindiell le 28/11/2004 14:14:49

sibi12> un nombre parfait est égal à la somme de ses facteurs : 6=3+2+1...

signaler à un administrateur
Commentaire de MadM@tt le 28/11/2004 14:21:23

Pour les nombres de mersenne je crois avoir compris, mais alors j'ai juste à prendre un nombre du style 1111111, tester s'il est premier, si oui je calcule 2^p -1 et je teste si ça c'est premier ? c'est simple non ?

et alors (j'ai vu ça sur tes liens sibi12) quand on parle de Mersenne 41, ça veut dire que le nombre p est constitué de 41  "1" ?

signaler à un administrateur
Commentaire de MadM@tt le 28/11/2004 14:26:52

il est excellent ce site sibi12, c'est le tien ?

signaler à un administrateur
Commentaire de sibi12 le 28/11/2004 14:28:32

Mindiell > Oui oui j'y ai penser... ;-)

signaler à un administrateur
Commentaire de sibi12 le 28/11/2004 14:43:54

dsl pour tt les post mais g un petit problème avec l'adsl et ca rame pas mal.

Oui mais justement il doit y avoir moyen de sensiblement accéleree les calcul en tenant compte de la forme de 2^p-1

en fait je sais qu'un theoreme dit que si on prend des nombre en progression geometrique et qu'on prend leur modulo par un nombre premier p on tombe 1 fois sur tout les nombre entre 0 et p-1 avant de retomber sur un de cette série. ces pas facile à expliquer mais je sais qu'on utilise cette technique en dans le pour indexer des elements dans une liste.
comme j'ai dit plus haut :

mod 3 : 0 si n est pair  1 si impair donc c = p mod 2
mod 5 : si on prend p =1,2,3,... c une suite de 1,3,2,0, 1,3,2,0,....

(2^1-1) mod 5 = 1
(2^2-1) mod 5 = 3
(2^3-1) mod 5 = 2
(2^4-1) mod 5 = 0
(2^5-1) mod 5 = 1
(2^6-1) mod 5 = 3
...
je ne tien pas compte que p doit être premier ici mais ca doit etre pris en compte pour eliminer deja une partie des p

idem pour mod 7 : 1,3,0, 1,3,0,...

on doit peut être pouvoir demontrer a partir de ca que le modulo d'un nombre en 2^p -1 par un nombre premier nous donne une serie qui se repete en augmentant p de 1 a chaque fois.


pour mersene 41 c pas ca. ca veux dire que c'est le 41eme nombre de mersene premier.

non c'est pas mon site ^^.

signaler à un administrateur
Commentaire de vlad2i le 28/11/2004 14:47:50

Plus de 100 commentaires ... tu bats des records déja

Pour compléter les nombres de mesrennes et leur lien avec des parfaits : le seul nombre premier, impair et parfait serait supérieur à 10^300 et contiendrait plus de 70 facteurs premiers et serait un nombre de mesrenne...

Bonne chance a celui qui le trouve...

Vlad

signaler à un administrateur
Commentaire de vlad2i le 28/11/2004 14:51:10

bi> "on doit peut être pouvoir demontrer a partir de ca que le modulo d'un nombre en 2^p -1 par un nombre premier nous donne une serie qui se repete en augmentant p de 1 a chaque fois"

Ca vaut pour tous les nombres ca, pas seulement pour les nombres de la forme 2^p-1 et pas seulementr pour les nombres premiers non plus :)

Vlad

signaler à un administrateur
Commentaire de sibi12 le 28/11/2004 16:32:35

Vlad > non c'est pas valable pour n'importe quelle nombre si on prend ceux de la forme n^n mod 5 la série ne se repete pas :
1,4,2,1,0,1,3,1,4,0,1,1,...

mais effectivement puisque 2^p est une progression geometrique de raison 2, ca marche pour 2^p et si ca marche pour 2^p mod n et que (2^p-1) mod n = ((2^p mod n)-1 mod n) et ca marche aussi (les 0 de la serie deviendront n-1 et les autres seront diminuer de 1 mais la serie reste intact).

signaler à un administrateur
Commentaire de vlad2i le 28/11/2004 16:37:12

C'est sur qu'en prenant un des rares nombres qui ne marchent pas ...

évidemment, les exponentielles auto-réferentielles (n^n, e^e...) ne marche pas... mais toute suite a progression affine ou géométrique ont le meme effet

TT simplement : x mod 5 = 4 alors x-1 mod 5 = 3 ...
et x * 4 mod 5 = 1... ce qui ne change pas l'ordre mais juste le premier élément :)

Vlad

signaler à un administrateur
Commentaire de Pingouin le 28/11/2004 18:15:33

Qui eut cru qu'un simple bout de code pour chercher des nombres premiers nous aurait emmener si loin ?!!! La j'avoue que je n'ai pas le nivo en arithmétique pour faire avancer le schmilimilimiliblick mais je me demandais qu'elle utilité trouver à ces quelques nombres mis a part RSA et ses nombres astronomiques ?

signaler à un administrateur
Commentaire de vlad2i le 28/11/2004 18:20:47

C'est comme si tu demandais a quoi servait de trouver pi ...

Une question dans le meme style : a quoi ca sert de chercher ?

Cherchez et arretez de poser des questions

Vlad

signaler à un administrateur
Commentaire de MadM@tt le 28/11/2004 18:29:58

Ouais ! vive nous qu'on cherche ce qui sert à rien lol !

signaler à un administrateur
Commentaire de Pingouin le 28/11/2004 20:40:16

Nan nan mais attention la on est bien d'accord a la base on s'en tamponne que ca serve a kkchose ou pas. De ttes facons si on ne cherchait que des choses qui ont un interet immédiat on ne trouverait jms rien qui nous fairait avancer. Moi personnellement j'ai étudié la répartition de certaines algues unicellulaires capables de mouvements actifs en fonction de la température...Le truc qui ne sert a rien a priori koi ! Je me disais juste kil etait ptet possible d'en faire kkchose de ce code MadMatt avait évoqué un screensaver par exemple, RSA aussi mais je suis sur kya moyen de le décorer ou de l'intégrer a kkchose d'autre mais c pas le but premier (eheh jeu de mots lol) on est bien d'accords.

signaler à un administrateur
Commentaire de Pingouin le 28/11/2004 20:42:50

Ah et au fait je participe au programme de recherche des nombres de Mersenne dont j'ai parlé comme koi je suis convaincu et puis le calcul des decimales de Pi a un interet théorik important.

signaler à un administrateur
Commentaire de Mindiell le 28/11/2004 21:21:20

vlad> si le seul nombre parfait impair est supérieur a 10^300 on le connait, non ? Bon soulignons qu'a l'heure actuelle, il semble improbable qu'un nobre parfait soit impair...

Pour trouver un nombre premier a 10 millions de chiffres, je vous souhaite bon courage. En effet, le M40 (a priori) ils ont mis 2 ans pour le trouver le programme GIMPS (celui de pingouin) et je pense qu'ils ont pas mal de tête et d'ordis la-bas :o) Donc ne revez pas trop non plus ;o)

signaler à un administrateur
Commentaire de vlad2i le 29/11/2004 17:32:45

"si le seul nombre parfait impair est supérieur a 10^300 on le connait" > non évidemment ...

"il semble improbable qu'un nobre parfait soit impair"> ca ne veut pas dire impossible...

Je surenchéris : pi et les nombres premiers, comme e et la plupart des constantes irrationneles transcendantes sont ABSOLUMENT NECESSAIRES ne serait ce que pour connaitre avant de comprendre ce qui dépasse la logique humaine :p

Rien n'est inutile, de plus, et pi comme e comme les nombres premiers sont à la base de nos math modernes (cos, sin, racine et j'en passe) et bien que nous n'égalerons jamais nos (z) ainés rien n'empeche de suivre leurs traces, c'est peut etre d'ailleurs le meilleur moyen de les surpasser...

non ?

Vlad

signaler à un administrateur
Commentaire de Mindiell le 29/11/2004 17:45:18

Vlad> "le seul nombre premier, impair et parfait serait supérieur à 10^300 et contiendrait plus de 70 facteurs premiers et serait un nombre de mesrenne..."

D'abord :
- tu parles d'un nombre premier, qui contiendrait des facteurs premiers... Tu m'expliques ? :o)

Ensuite, si c'est un nombre de Mersenne :
10^300 < 2^1500-1
Hors, on a trouvé le 31ème nombre de Mersenne premier : 2^1 398 269 -1 => 10^420 921
Donc on l'aurait déjà trouvé !

Donc ton affirmation est fausse... J'aimerais savoir où tu as trouvé ca...

signaler à un administrateur
Commentaire de Mindiell le 29/11/2004 17:51:58

Mea culpa, supérieur à 10^300 ne donne pas de limite supéreure, donc mise à part l'affirmation que c'est un nombre premier qui contient des facteurs (ca c'est impossible :o) ), ton affirmation ne peut-être que vraie... mais vraiment improbable (si c'est un Mersenne).
Si ce n'est pas un Mersenne, on l'a peut-être déjà dépassé.

D'ailleurs, en y réfléchissant, un nombre parfait ne peut pas être premier puisqu'il vaut la somme de ses facteurs !!! :o)

Je reprends donc ton affirmation : "Un nombre impair et parfait existe peut-être..." :o)

D'ailleurs, s'il en existe au moins un, je doute qu'il n'en existe pas plusieurs....

signaler à un administrateur
Commentaire de vlad2i le 29/11/2004 17:55:24

Effectivement, je mecorrige, et toi par la meme occasion

il serait premier, impair, parfait supérieur à 10^300 et étant un nombre de mesrenne, soit le nombre 2^x-1, alors 2^x est un produit de 70 facteurs

Maitenant, je ne vois pas poi tu soutient que l'on l'aurait déjà trouvé ... le nombre en question peut etre supérieur à 100^10000000 je ne sais pas ...

Vlad (source: MIT, boston)

signaler à un administrateur
Commentaire de Mindiell le 29/11/2004 18:13:00

Tu as un lien STP ? :o)

signaler à un administrateur
Commentaire de vlad2i le 29/11/2004 18:22:52

Non mais j'ai des livres si tu veux
J'ai éssayé de les rentrer dans le lecteur de disquette et mon ordinateur emet depuis un son de torpille...

Mais ca doit bien se trouver ailleurs je n'en doute pas

Vlad

signaler à un administrateur
Commentaire de Mindiell le 29/11/2004 18:27:14

"il serait premier, impair, parfait"
Ca te gene pas cette affirmation quand meme ? Un premier qui est parfait ?????

signaler à un administrateur
Commentaire de vlad2i le 29/11/2004 18:33:02

un premier qui est parfait... effectivement... ce me pose un pb mais d'ou ca vient dis moi ...

les facteurs... alors ce nombre ne serait pas premier ... soit... donc hors-sujet... tu aurais pu avoir l'amabilité de me montrer cette erreur du doigt un peu avant ... faut dire que les torpilles aident pas a se souvenir... mille excuses ... recorrection : un nombre de mesrenne, impair et parfait dont le x de 2^x posséde 70 facteurs premiers au moins dont un supérieur à 10^300...

Vlad

signaler à un administrateur
Commentaire de MadM@tt le 29/11/2004 18:35:37

Ahhh jme disais bien aussi, je comprenais pas pourquoi tu parlais en meme temps de nombres premiers et de nombres parfaits... J'allais perdre le fil

signaler à un administrateur
Commentaire de Mindiell le 29/11/2004 18:39:51

Je te l'avais deja indiqué dans mon "mea culpa" de "17:51:58" ;o)
Je vais tacher de retrouver l'info, merci...

Ok, donc le Mp = 2^p -1, avec 2^p nombre pair possédant 70 facteurs premiers dont l'un d'eux serait supérieur à 10^300, là ca semble plus complexe déjà :o)
Je vais regarder ca...

signaler à un administrateur
Commentaire de MadM@tt le 29/11/2004 18:41:10

Oula, mais pourquoi ce nombre la précisément, a t'il une utilité ? (sans retourner dans le débat de l'utilité de faire de tels calculs)

signaler à un administrateur
Commentaire de vlad2i le 29/11/2004 18:42:57

Re-mille (= 2000) excuses pour cette erreur ... j'avais moi aussi perdu le fil ...

signaler à un administrateur
Commentaire de vlad2i le 29/11/2004 18:45:10

Ce nombre est juste cherché depuis descartes.... en dehors de ca, pi est cherché depuis plus de 2500 ans et les nombres premiers depuis pythagore...

Vlad

signaler à un administrateur
Commentaire de Mindiell le 29/11/2004 18:52:50

MadM@tt> En fait, il semble tellement improbable qu'un tel nombre existe, et étant actuellement dans l'incapacité de le prouver, le premier à découvrir ca serait célèbre :o)...

Et puis bon, c'est comme tout le reste, moi ca me fait rever. Imagine que pi n'étant jamais répété, toutes les séquences de chiffre existe dedans à priori. Ainsi donc on devrait pouvoir y trouver la 9eme symphonie de Beethoven, ton prénom, le dernier bouquin en vogue, etc... :o)

signaler à un administrateur
Commentaire de MadM@tt le 29/11/2004 19:05:49

ah ok, seulement la c'est pas comme pi, on en connais aucun bout c'est ça ?

signaler à un administrateur
Commentaire de vlad2i le 29/11/2004 19:11:29

On ne connais que peu de choses sur ce nombre, mis à part les propriétés démontrées que je t'ai citées.

D'ailleurs, si on n'a jamais montré que ce nombre existait, on n'a pas non plus démontré qu'il n'existait pas - et Gauss, Cauchy et autres Fubini ont essayé de le trouver. Pourquoi pas nous :p ?

Quant à pi... on en a des expressions qu'il suffit de poursuivre un certain temps pour avoir la précision voulue... mais ca ne lui donne pas pour autant une logique ni une rationalité...

Vlad

signaler à un administrateur
Commentaire de dnob700 le 29/11/2004 19:16:09

pas sur que Pi ne se répète jamais.

Ca voudrait dire que Pi est un nombre normal, et même si pour l'instant on a vraiment l'impression que c'est un nombre normal, ça n'a jamais pu être prouvé jusqu'à aujourd'hui.

signaler à un administrateur
Commentaire de vlad2i le 29/11/2004 19:20:02

nombre "normal" n'est pas un terme mathématique me semble t il

Pour l'instant, et jusqu'à preuve du contraire, Pi est réel, irrationnel, transcendant (tout comme e)

Et jusqu'à preuve du contraire, on en est a plusieurs millions de milliards de décimales (binaires) et aucune répetition a l'horizon...

Vlad

signaler à un administrateur
Commentaire de Pingouin le 29/11/2004 21:49:15

Ouais la le coup du nombre "normal"...C'est quoi un nombre anormal ? Bref. Dites vous m'avez l'air calé : Ya pas un truc sur les décimales binaires qui a été démontré,  sur leur repartition notamment? Déjà il me semble qu'on peut calculer celle que l'on veut sans forcement connaitre les precedentes non ? (Mad motivé par un calcul de Pi ? développement en série de l'arctan ? ;-)

signaler à un administrateur
Commentaire de sibi12 le 29/11/2004 22:05:48

hehe pour pi il y a effectivement un truc sur les decimale binaire (hexadecimale plus precisement) un algo permet de trouver la nieme decimale hexadecimale de pi

je sais plus ou j'ai vu ca je vais faire quelque recherche

signaler à un administrateur
Commentaire de dnob700 le 29/11/2004 22:11:32

bien sur qu'un nombre normal c'est mathématique.

un nombre normal est un irationnel pour qui chaque chiffre à la même fréquence d'apparition (donc 1/10ème dans son dévelloppement décimal (la suite des ses chiffres)).

Un nmbre parfaitement normal, est un nombre normal dans toute les bases.

Et dire que Pi ne se répète jamais c'est dire qu'il est normal, ce qui n'est pas prouvé. C'est a dire que l'on sait qu'il n'est pas périodique (sinon il serait rationel) mais rien ne prouve que toute les suite de chiffre finissent par apparaitre à un moment ou un autre.

signaler à un administrateur
Commentaire de sibi12 le 29/11/2004 22:40:37

voila http://membres.lycos.fr/villemingerard/Geometri/PiCalcul.htm#Top

tout a la fin...

signaler à un administrateur
Commentaire de Mindiell le 29/11/2004 23:56:54

Le site de Gerard Villemin est une mine d'or d'ailleurs ;o)

Et dnob700, si PI ne se répète jamais, ca veut rien dire pour sa normalite. 0,01234657890123456789... est normal, mais pas irrationnel, non ?

signaler à un administrateur
Commentaire de sibi12 le 30/11/2004 16:21:09

Si ça veux dire qu'a priori il n'y a pas plus de chance que la nième décimale soit un 2 qu'un 5 ou 6 et qu'ils ont donc tous une probabilité de 1/10 de l'être.

signaler à un administrateur
Commentaire de vlad2i le 30/11/2004 18:12:32

Je confirme midiell :

1. racine de deux ne se répète pas, et pourtant il est bien irrationnel mais pas transcendant, or pi est irrationnel (d'après Ramanujan ca a été établi) donc il ne se répète jamais et la preuve expérimentale de son irrationnalité ne fait aucun doute - et transcendant .

Le seul doute est celui de sa transcendance, que l'on n'a jamais démontrée, mais qui semble se vérifier d'elle meme alors que l'on trouve de plus en plus de décimales.

Pour la question plus haut, il y a un algorithme qui permet de calculer une nième décimale binaire et qui a été utilisée pour calculer la 10^100 ème décimale binaire de pi (qui est un 1) mais est bcp plus lente pour calculer une décimale binaire et absolument innéficace pour calculer la série...

En ce qui concerne les nb premiers, il y a une probabilité d'apparence donnée (avec ln je crois) qui constitue la fonction zeta. En ce qui concerne pi, aucune probabilité possible (du fait de sa transcendance) et notemment a cause du 0 qui est plutot rare (surtt dans les 1000 premieres...)

Enfin bcp de problèmes quoi :)

Vlad

signaler à un administrateur
Commentaire de MadM@tt le 30/11/2004 21:05:31

Ah le calcul de Pi c'est pas merveilleux ça... Merci pour le lien sibi12, au moins j'ai un algorithme à me mettre sous la dent la... J'ai essayé avec des long, pas de problème, mais ça plante au bout d'un moment (dépassement de capacité : normal). J'essaye maintenant avec des grands nombres, si ça marche je la metterai sur vbfrance

signaler à un administrateur
Commentaire de Pingouin le 01/12/2004 20:22:08

Personnellement j'ai hate de voir ce que tout ca va donner au final... (a part un centaine d'autres commentaires...)

signaler à un administrateur
Commentaire de MadM@tt le 02/12/2004 18:22:51

J'ai une petite question (dans un nouveau programme pour calculer Pi) :
il faut évidemment un algorithme pour à chaque fois aller chercher une nouvelle décimale... Pensez vous qu'il est possible d'utiliser cette méhode :
je calcule Pi (avec un calcul précis) et je le multiplie en meme temps par 10
je prend la dernière décimale
je recalcule et remultiplie par 100
je prend la dernière décimale
etc avec à chaque fois 10 de plus, comme ça a chaque fois j'ai une décimale en plus

Pour calculer, j'ai des fonctions pour les grands nombres, mais je voulais savoir si cette methode est bonne, parce que j'avais déjà essayé de l'utiliser mais hélas sans succès (cétait il y a longtemps aussi).
Merci tous

signaler à un administrateur
Commentaire de sibi12 le 02/12/2004 18:27:40

Si tu multiplie après c'est inutile tu aura des chiffres mais qui n'ont aucune signification.
Si tu arrive à multiplier, moyennant quelque manipulation algebrique, au depart de l'algo la ça ira

signaler à un administrateur
Commentaire de scelw le 12/12/2004 11:50:36

Malgré tout, le VB est très lent et très limité. Vous restez super "bas" par rapport aux programmes en C/C++ qui utilisent NTL (pour Windows, installation facile) ou GMP (pour Linux, installation plus ardue) et qui manipulent à grande vitesse des nombres de plus d'1 million de chiffre (ça fait des nombres qui pèsent plusieurs Mo, quand même...) !
Donc, avis à tous les passionés, passez au C/C++ ! ça vaut vraiment le coup (je parle en connaissance de cause puisque j'ai commencé avec le VB avant de me convertir au C). et puis l'aide de NTL est en français et l'installation facile... n'hésitez pas !

signaler à un administrateur
Commentaire de scelw le 09/01/2005 14:53:13

J'aimerai savoir si le test de Miller-Rabin est plus rapide que celui des 3 indiens (en temps d'exécution sur ordinateur)... Quelqu'un saurait me répondre?

Deuxio, qui connait une bonne implémentation de l'algo des 3 indiens en VB ou C/C++ ?

signaler à un administrateur
Commentaire de sibi12 le 09/01/2005 15:44:59

Miller Rabin me semble plus rapide mais comme Super_Mat te l'as dit sur l'autre source ca ne donne qu'une probabilité. Je n'ai jms vu d'implementation des 3 indiens mais ca me tente vraiment...sauf que certain signe de l'algo me sont inconnu :s :s

signaler à un administrateur
Commentaire de scelw le 09/01/2005 16:10:41

salut! c'est cool si t'es motivé pour tenter d'implémenter l'algo des 3 indiens! je le suis aussi! on pourrait mettre en marche un projet de coopération... si tu as besoin d'aide pour certains symboles mathématiques, demande! sinon, tu veux coder l'algo en VB ou en C/C++? Je ne te cache que je préfère de loin le C/C++ au VB et que la supériorité du C/C++ en terme de rapidité est indéniable...

amicalement

scelw

signaler à un administrateur
Commentaire de sibi12 le 09/01/2005 16:18:44

Je pense qu'il serai mieux de coder ça en C++...

En fait ce qui pose problème c'est le symbole égale avec 3 barre au lieu de 2. En analyse ca donne l'equation d'une courbe mais là... j'ai vu ce symbole dans le 2eme tome de mon cours d'algebre qui traite des entier donc j'imagine que j'aurai plus d'info la dessus après les examens...

Je sais pas si tu as deja vu l'algo. faudrai que je retrouve l'adresse ou je l'ai trouver. je l'ai imprimer je devrai pouvoir retrouver ca

signaler à un administrateur
Commentaire de dnob700 le 09/01/2005 17:21:05

en arithmétique, ce symbole est souvent utilisé pour la congruence, plutot que celui de l'égalité "normal"

signaler à un administrateur
Commentaire de sibi12 le 09/01/2005 17:31:56

et la congruance c'est quoi? c'est pas qd une serie tend vers un nombre ou un truc du style?

signaler à un administrateur
Commentaire de dnob700 le 09/01/2005 17:56:11

non c'est le modulo

si en vb tu écrit :

x=a mod b
(en c tu mettrai x=a%b; )
en math tu l'écrit :
a=x modulo b (avec le signe égale à trois branche)
ou en abrégé :
a=x [b]   (avec le signe égale à trois branche)

c'est a dire que x est le reste de la division entière de a par b (attention, ce n'est pas forcement le plus petit reste).

il faut ausse remarquer que l'opération ne s'écrit pas dans le même ordre en math et en VB et que le signe égale spécial n'est pas obligatoire, on peut aussi bien écrire le signe normale.

signaler à un administrateur
Commentaire de scelw le 09/01/2005 18:07:12

exact! les modulos sont une opération très simple. niveau fin de lycée. ça se traite facilement en C++ (il y a des fonctions toutes faites).

si tu veux plus de précisions mail-moi (je passe rarement sur cppfrance)! :)

signaler à un administrateur
Commentaire de sibi12 le 09/01/2005 18:11:40

Merci pour ces informations

dnob700 >>

"(attention, ce n'est pas forcement le plus petit reste)."

c'est à dire?

scelw >>

ok..je verrai  ca apres les examens. ^^

signaler à un administrateur
Commentaire de dnob700 le 09/01/2005 18:19:22

tout les égale dont la ligne se terminara par un truc dans le genre : [x] seront des congruance, les autres sont des égaux normaux.

si tu as :
a=b [p]
ca veut dire : il existe k un entier tel que :
a=k*p + b

bon, si je prend a=15 et p=2  alors, on pense tout de suite à :
15=7*2 +1
donc :
15=1 [2]

mais 15=6*2 + 3 c'est vrai aussi et donc on peut écrire :
15 = 3 [2]
ou même
15= -1 [2]

la pratique dit de prendre le plus petit entier en valeurs absolue de même signe que celui qui est devant le signe de congruence, mais ya des foi ou on fait autre chose.

signaler à un administrateur
Commentaire de sibi12 le 09/01/2005 23:30:30

ah oui ok j'ai saisi. donc en fait si a=b [p] b n'est pas necessairement entre 0 et b-1. la relation est vraie pour autant que a=k*p+b avec k entier

signaler à un administrateur
Commentaire de algori le 07/02/2005 20:02:05

Bon, je te rassure : j'ai pas lu tout les commentaires...
Sinon, faut avouer que c'est bien pensé. Moi aussi, j'avais fait un prog sur les nombres premiers, en Javascript, je crois, mais chais pas où je l'ai foutu !
Voili, voila un petit 10/10.
@++

signaler à un administrateur
Commentaire de Rman le 20/02/2005 01:06:14

juste pour dire si un jour tu te recentre sur le sujet, les nombre de mersenne sont bcp mais bcp trop previsible pour un codage de type RSA, meme si il sont tres grd. il nen reste pas moins que cest tres interressent :)
have fun pour la suite

signaler à un administrateur
Commentaire de MadM@tt le 20/02/2005 12:56:31

Oui c'est vrai que pour le cryptage, autant donner la clé tout de suite si on utilise des nombres connus.

signaler à un administrateur
Commentaire de BozzoDodo le 26/04/2005 11:23:29

Il y  a beaucoup de commentaires... je en sais pas si celui la a déjà été dit: il serait interessant de pouvoir cacher la fenetre, la mettre en icone à coté de l'heure par exemple, vu qu'on attend de ce programme qu'il travaille en arrière plan.
bonne prog'

signaler à un administrateur
Commentaire de BozzoDodo le 26/04/2005 11:28:29

arfff sui décu! il y a rapidement dépassement de capacité! On ne pourra pas chercher des nombres premiers de 100 chiffres lol (remarque meme 10 ca plante...)

signaler à un administrateur
Commentaire de MadM@tt le 26/04/2005 12:49:27

BozzoDodo >> Oui c'est exactement le problème de cette source, elle date un peu et j'ai toujours envisagé d'y mettre une gestion des grands nombres mais .... la flème héhé
enfin disons qu'on a tous des changements de projet des fois ;) mais si quelqu'un est motivé pour le faire je l'encourage !

signaler à un administrateur
Commentaire de BozzoDodo le 26/04/2005 13:53:53

Je vais peut être m'y mettre. Je pensais pouvoir trouver des grands nombres en n'utilisant pas les integer, long double et autres mais en utilisant les string. Pour cela il faut recrééer les méthodes de calcul. J'ai commencé l'addition... c'est un début =)

signaler à un administrateur
Commentaire de Mindiell le 26/04/2005 14:01:57

Laisse tomber, arrête de re-re-re-re-re-inventer la roue, il existe des dizaines de libs qur le net qui gère les grands nombres sous formes de chaines de caractères ^^

signaler à un administrateur
Commentaire de sibi12 le 26/04/2005 14:08:30

Et niveau performance c'est pas top... jette un coup d'oeil à la SDL en C++. Une petite application console ira plus vite que n'importe quel algo de manipulation de grand nombre en VB que ce soit sur une chaine de caractère ou sur un tableau de byte

signaler à un administrateur
Commentaire de ab44 le 25/08/2005 17:11:31

salut MadM@tt

C'est une source que je recherchait merci
mais j'ai un problème quand je clique sur ton exe, il y a message d'erreur qui dit:

"Erreur système &h80070583(-2147023485). La classe n'existe pas"

merci de m'aider

Bonne prog a tous.

signaler à un administrateur
Commentaire de ab44 le 25/08/2005 17:15:46

Et j'en profit pour te demander ques ce que le fichier "Nombres Premier.exe.manifest "

signaler à un administrateur
Commentaire de MadM@tt le 25/08/2005 21:53:53

AB44 > le .manifest c'est le fichier qui sert à avoir l'apparence de windows XP (cherche sur vbfrance plein d'explications ;)
Pour la classe... aucune idée j'ai jamais utilisé de classe je n'ai pas commencé avec cette source, donc je ne sais pas du tout quoi de répondre désolé, essaye de recopier le code en copier collé sinon
A noter que j'ai fait ça sous VB5 c'est peut etre la le problème ??

Mindiell > lit la présentation de la source
Petit résumé : j'en avais envie, je m'ennuyai, ça me tentait etc etc etc... J'ai fait ça pour le plaisir et pour m'entrainer aussi, après bien sur tu peux me reprocher de l'avoir poster alors qu'il existe mieux et que je ré-ré-réinvente la roue ;) mais vu le nombre de commentaires, je pense que cette source a été interessante et le sera pour ceux qui cherchent des infos en venant ici
Voilà ;) bonne journée

signaler à un administrateur
Commentaire de ab44 le 25/08/2005 23:12:05

En faite c'est ton fichier Mannifest qui est la cause de mon problème alors pourquoi : Va savoir !!

signaler à un administrateur
Commentaire de Mindiell le 26/08/2005 10:27:03

Ben MadM@tt ! Je répondais à BozzoDodo et c'était au mois d'Avril :)
Ta source nous a tous intéressé puisque je participais depuis longtemps à la discussion ;)

signaler à un administrateur
Commentaire de MadM@tt le 26/08/2005 14:15:46

ouppsss désolé ^^ j'ai parlé trop vite ;)
autant pour moi

signaler à un administrateur
Commentaire de the fake le 02/11/2005 14:46:33

Salut, deja bravo pour cette excellente source (j'aime pas laisser tourner mon pc sans rien quand je suis pas la ^^). je voulais juste te dire que l'on peut cinqtupler (* 5 ) la vitesse de recherche juste en désactivant la liste lors de la recherche, en sauvegardant seuleument quand l'utilisateur clique sur le bouton stop,en affichant pas le 1 er nombre de la liste lorsqu'il vide la liste, et en enlevant le manifest pour supprimer le thème xp, tiens le code (a peine modifié) :
Debut:
    Number = NombreEnCours
    ' cherche
    
    Liste.Visible = False
    
    Do
        If StopSearch = True Then GoTo Fin
        ' Afin de ne pas stocker trop de nombres dans la listbox on quitte et on revient
        If Number - NombreEnCours > 99999 Then
            NombreEnCours = Number
            
            Liste.Clear
            GoTo Debut
        End If
        If Premier(Number) Then Liste.AddItem Str(Number)
        Number = Number + 1#
        DoEvents
    Loop
Fin:
  Liste.Visible = True
    btnStop.Enabled = False
    Start.Enabled = True
    NombreEnCours = Number
    Save
    NumberStart.Text = Trim(Str(NombreEnCours))
    Me.Caption = "Fini !"
End Function

Voila je te donne mes résultats sur 20 seconde en partant de 1...
Original = 421010
Opti moyenne (sans thèmexp + liste invisible) = 1809972
Opti maximum = 2129262

Bon je sais que tu voulais pas enlever la fonction pour sauvegarder car si l'ordi plante.. m'enfin il va pas planter toutes les minutes quand meme !!!

A +

signaler à un administrateur
Commentaire de MadM@tt le 04/11/2005 19:47:50

Oui oui tu as totalement raison, y'a moyen de l'optimiser que ça soit dans l'algo ou dans la forme du prog, simplement la version sans affichage du résultat je trouvais ça dommage car on ne voit pas ce que fais l'ordi quoi, enfin c'est un question de point de vue lol ;)
Chacun peut remanier la source comme il veut, j'avais aussi penser, pour afficher le résultat tout en gagnant le temps comme si je l'affichai pas : on gèle le rafraichissement de la textbox avec les api, on calcule et on ajoute normalement dans la textbox, mais ça prendra très peu de temps car la textbox n'est pas rafraichie, et par exemple on rafraichit la textbox toutes les 10 secondes....
Enfin y'a plein de techniques
Mais le manifest je savais pas que ça ralentissait le prog, et la sauvegarde, c'est comme la textbox, y'a vraiment moyen de l'améliorer quoi...

Enfin merci pour ton commentaire ;)

signaler à un administrateur
Commentaire de the fake le 15/01/2006 10:53:08

Salut !
J'ai refait le programme en C (c'est pas tout a fait le meme algo mais ca y ressemble) et les résultats sont vraiment flagrent !

Le programme me trouve 35 000 000 de nombres premiers en 10 sec...

Je vous poste le lien vers le progz ainsi que la source (je mt le tout dans un rar)..
Il existe des algo encore bien plus rapide, mais bien plus difficile a mettre en place, donc j'essaye pas trop :P

Au début le fichier enregistrait dans un fichier txt, mais d'une ca ralentissait, de 2 quand on arrive avec un fichier txt de 30 Mo en 3 sec, ca calme un peu..

Donc le programme vous dit juste le dernier nombre trouvé, si vous voulez quand meme que le log enregistre, dites le moi !

Ce n'est aps le meme genre de programme que celui ci, puisqu'on definit le nombre jusqu'ou il va chercher !

Assez blablaté, voici le lien :

http://bork0.free.fr/logs/premiers.rar

A+

signaler à un administrateur
Commentaire de sibi12 le 15/01/2006 14:23:43

Je suis en examen donc je n'ai jeter qu'un coup d'oeil rapide mais chez moi ça ne fonctionne pas...

Je lui fait afficher le tout dans le console et voila ce que j'ai :

Veuillez entrer la limite de verification :
10

2
3
4
6
8
9
La verification est terminee :).


Je ne pense pas que ça ait un rapport mais je l'ai compiler avec mingw sous linux.

Sinon un conseil. Au niveau des performance ce sera encore mieux si tu utilise des entiers et des modulo au lieu d'une division sur des nombres a virgule flottante. Même si les nombre a virgule flottante te permette de verifier de plus grand nombre apres un moment les calculs seront incoherent du au fait que l'exposant sera trop grand. Le mieux serait d'utiliser une librairie pour gerer les grands entier. il y en a pas mal sur le net.

signaler à un administrateur
Commentaire de the fake le 15/01/2006 20:30:37

Bon tout d'abord :
VEUILLEZ COMPLETEMENT IGNOREZ MON PRECEDENT CODE, JAI FAIT UNE FAUTE DANS LE CODE SOURCE.. BREF OUBLIEZ !

Par contre j'ai trouvé sur le net, un programme pour chercher les nombres entiers se basant sur le crible d'Ératostène (je sais aps si on dit comme ça) et accrochez vous bien...

Le programme me trouve 100 000 000 Millions de nombres 1ers en 15 sec, 10 Millions en 1 sec, 1 Milliards en 10 min..
J'ai refait les tests chez un pote avec un pc nettement plus performant (Amd athlon 3200 +, 1 Go de ram) et il trouve 2 Milliards de nombres premiers en 5 min...

Seuleument 3 pb :
-Il enregistre dans un txt, ce qui génère des txt de 2.10 Go (si si !)
- Les variables sont déclarés en unsigned long int cce qui fait des valeurs max de 4 295 000 000 (je sais plus exactement), et donc pas plus haut, il faudrait pouvoir les déclarer en long double, ce qui serait nettement mieux..

- Il faut lancer le log par l'invite de commande, mais ca je vous l'explique après !

tout d'abord telecharger le ici :
http://bork0.free.fr/logs/premiers.rar

et pour les linuxiens (ou mm les autres) la source ici :
http://bork0.free.fr/logs/premiers-sources.rar

Extractez (ou compilez) le .exe a la racine du disque (C:\), ensuite lancez l'invite de commande par demarrer - executer - cmd
puis faites des cd.. jusqu'a revenir a la racine (C:\) ensuite tapez votre commande sous cette syntaxe :

start Chercheprime.exe nombre_max (ou Chercheprime correspond au nom de l'exe)

Si vous voulez cherchez 1 000 000 000 de nombres, tapez :
start Chercheprime.exe 1000000000

Ensuite, une fenetre s'ouvre, bon et la... le log vous avertit quand c'est fini paar une méchante erreur !!

regardez dan sle répertoire oue s le log, vous devriez avoir primetab.txt, ouvrez le et tadam !
(si vous faites des recherches de 3 Milliards de nombres, n'essayez meme pas d'ouvrir le txt, il fera 3 Go :S )

Vous pouvez faire des test et comparez :

mon pc : Amd atlhlon 2000+ (fréquence a 1666 Mhz) - 256 Mo de ram me trouve 100 000 000 en 17 sec.. et 1 Milliards en 10-15 min

Pc d'un pote (3200 +, 1 Go de ram) : 2 Milliards de nombres en 5 min..

Voila, enjoy !

signaler à un administrateur
Commentaire de sibi12 le 15/01/2006 21:07:32

Ben oui le crible d'erathostene est tout indiquer pour ce genre de recherche...

"et pour les linuxiens (ou mm les autres) la source ici :

(...)

Extractez (ou compilez) le .exe a la racine du disque (C:\), ensuite lancez l'invite de commande par demarrer - executer - cmd
puis faites des cd.. jusqu'a revenir a la racine (C:\) ensuite tapez votre commande sous cette syntaxe :"

Si on le met pas a la racine ça marche pas ? :D et puis comment on fait pour aller dans C:\ sur linux ? :D

Et executer cmd C:\ c'est pas plus simple que cmd -> cd.. -> cd.. -> ..... On peux faire cd \ aussi :D

Bon j'arrete mes conneries j'essaierais ça demain si j'arrive pas a requisitionner ma copine entre 2 examens :D


Sinon il y en a deja des tonnes d'eratostene je suis deja tomber sur un qui était particulierement bien fait au niveau de la gestion de la memoire etc...(ct sur cppfrance je pense) jte dirais ce que j'en pense

signaler à un administrateur
Commentaire de sibi12 le 15/01/2006 21:15:26

Ah oui aussi le .RAR ... C'est mal :-(

(Je deviens parano depuis que je suis sous linux :-( ... Mais ça se comprend ^^)

signaler à un administrateur
Commentaire de the fake le 16/01/2006 17:39:54

Ben moi qui pensait vous faire plaisir...
Le fichier tu le met bien ou tu veut, mais c'est plus simple de le mettre a la racine..
J'ai surtout poster pour montrer la différence de vitesse entre Vb et C, ca a rien a voir !


signaler à un administrateur
Commentaire de maestro1303 le 02/06/2007 22:41:04

Bonjour à tous,
Au risque de dire une bêtise je me permets de vous demander ceci:
Il y a un algo (très facile à mettre en place) du à sudaram(crible de Sundaram) qui donne tous les nombres impairs... non premiers! Ne serait il pas plus facile de stocker ces nombres dans une table ou dans un fichier et trouver alors les nombres impairs ne figurant pas dans cette liste qui sont alors -à coup sûr - tous premiers!

signaler à un administrateur
Commentaire de jmfmarques le 15/07/2007 08:33:54

Bonjour, MadM@tt,

1) je mets la note de 10. Comment faire autrement (je fais la même chose que toi pour terouver des nombres premiers. j'entends pas là : même mécanisme, à 2 "poils" près).
2) tu peux diviser par 2 te temps de traitement, si tu veux ... car (mis à part le 1er nombre premier (2), tous les autres sont impairs et il est donc inutile de "balayer" les pairs).

Amitiés.

signaler à un administrateur
Commentaire de maestro1303 le 17/07/2007 20:19:52

Bonjour,

Est ce que quelqu'un peut répondre à mon message précédent?

Merci infiniment!

signaler à un administrateur
Commentaire de MadM@tt le 18/07/2007 20:38:19

Dsl j'ai pas répondu.

Alors pour maestro1303 > euh j'en sais rien lol. L'idée parait bonne, après est-ce que ça serait plus rapide... Ben franchement j'en ai aucune idée.

jmfmarques > pour les nombres pairs ben tu veux tester comment qu'il est pair ? En le divisant par 2, donc ça revient (à peu près) au meme qu'avec une boucle for qui cherche à le diviser de 2 à n parce que il va tester en premier avec 2 et ça va pas passer.
A moins que t'ai une autre idée... ?

signaler à un administrateur
Commentaire de maestro1303 le 19/07/2007 20:30:27

Excusez moi de devoir vous faire cette requête un peu suagrenue.
Est ce que je peux faire tourner ce code sous Excel(vba)(Office2003).
Sinon Y aurit il un moyen d'avoir VB gratuitement.
Je crois aussi que l'idée de faire Sunduram ne doit pas être rapide sinon l'un d'entre vous l'aurait utilisée. donc j'abandonne ça.

Je ne vous dirais jamais assez combien je suis attaché à ce sujet.

Merci de votre compréhension et de vos réponses.
  

signaler à un administrateur
Commentaire de MadM@tt le 19/07/2007 21:45:33

Pour faire tourner ça sous VBA oui je pense que c'est possible, il faut juste ajouter la form "Form1.frm" à un projet sous vba je pense (enfin je connais pas trop vba)
Pour VB gratuit, si on veux faire ça légalement c'est impossible :D

Pour Sunduram, pourquoi ne pas essayer ? mais je pense que doit y'avoir des articles sur internet qui doivent présenter les meilleurs algo pour ce genre de recherches (et voir les commentaires de cette source aussi !)

signaler à un administrateur
Commentaire de jmfmarques le 23/07/2007 11:28:37

Bonjour,  MadM@tt

Qui te parle de tester si le nombre est pair ?

Le 1er nombre premier est 2 ===>> tu l'inscris donc d'office.

Tu fais ensuite ta boucle d'ajout à partir de 3 et avec un step 2

Tu ne risques ainsi pas de balayer les pairs, non ?

signaler à un administrateur
Commentaire de MadM@tt le 23/07/2007 16:37:55

"avec un step 2" > oulaaa je suis fatigué !!
Effectivement ! c'est vrai que ça doit accélerer le truc, enfin je n'ai plus utilisé ce programme depuis longtemps (notamment à cause de son inutilité ^^) donc je ne sais pas si ça me servira.

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Programme de TRI [ par jia2812 ] Slt les progs'!Voilà, je voudrais faire 1 code qui permet de faire des tris des nombres. J'en ai fait, mais j'me demande s'il est bien optimisé?... Al ULAM [ par Leonello ] Je recherche le code ( VB6 si possible ) d'un programme permettant de visualiser les nombres premiers, par la méthode d'Ulam. ( Spirale dans laquelles calcul de grands nombres [ par bonnsgeo ] salut !existe t il un ocx ou dll ou autre chose pour pouvoir faire des calculs sur de grands entiers (très grands) ?MerciPS: g trouve des bouts de cod Nombres premiers (optimisation) [ par Julien39 ] En faisant des programmes sur les nombres premiers et en voulant am&#233;liorer la vitesse d'execution on fait beaucoup de choses, v&#233;rifier que p Recherche des enregistrement audio des nombres [ par addyct ] Bonjour &#224; tous Je recherche une biblioth&#232;que qui contiendrait les enregistrements audio des nombres (en fran&#231;ais de pr&#233;f&#233;renc Nombres premiers [ par matovitch ] Salut à tous !Je programme un test de primalité (un nombre est premier ou pas) "assez efficasse"   :  5915833991189567 premier en moins de 10 sec avec 2^1024, calculs sur de grand nombres [ par pazgal ] Bonsoir, Ma question est simple : j'aimerais faire des calculs sur des nombres grands, tr&#232;s grands ... Mais &#224;&nbsp; priori l'ordi m'envoye Liste de dn nombres premiers supérieurs à di [ par NGUYENTRITHIEN ] Veuillez trouver ci-dessous le code source pour avis. C'est une macro qui capte la valeur de :* -di  (entier positif de départ ) dans la cellule B1 de précision de nombres après calculs [ par AudreyV ] Bonjour, J'aimerais obtenir des résultats avec une précision de 3 chiffres après la virgule. Pour calculer mes résultats, je suis obligée de passer p recherche de valeurs numériques [ par jifolo ] Bonjour,J'ai un petit probl&#232;me tout con mais je me prends la t&#234;te avec donc si quelqu'un peut m'aider.Je voudrai rechercher dans une feuille


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version


LG KP501

Entre 9€ et 159€


Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,640 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.