OPÉRATIONS SUR DE GRANDS ENTIERS NATURELS (+100 CHIFFRES)

cs_goth Messages postés 82 Date d'inscription lundi 23 décembre 2002 Statut Membre Dernière intervention 23 août 2005 - 23 août 2005 à 09:34
 jl47 - 1 mai 2015 à 10:49
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/33384-operations-sur-de-grands-entiers-naturels-100-chiffres

C'est un programme fort intéressant et qui me rend bien service.Merci à vous.
cs_DarkVader Messages postés 51 Date d'inscription samedi 21 octobre 2000 Statut Membre Dernière intervention 10 octobre 2011
21 juin 2007 à 10:11
Je suis également en recherche sur ce thème et la seule voie royale est l'exploitation des libraires spécifiques écrites en C
car réécrire les différents types d'opérations en gestion de blocs sous VB donne un résultat rapidement pitoyable
(notamment dès qu'on dépasse les nombres en 256bits)

GMP (libgmp-3.dll) est donnée pour la plus rapide (loin devant bigint, bcmath etc) et semble la plus complète avec ses presque 400 fonctions
mais je ne parviens pas à l'exploiter, d'autant que la littérature sur la toile concernant ce sujet
est des plus ligth surtout pour une utilisation VB. 8(
De plus l'avantage de cette librairie est d'être supportée par php ce qui permet de développer des procédures clien-serveur communes.

Si quelqu'un avait une expérience dans le domaine, il serait le bienvenu.
Proger Messages postés 248 Date d'inscription vendredi 10 novembre 2000 Statut Membre Dernière intervention 19 décembre 2008
28 avril 2007 à 01:57
Cette source est abandonnée ? Je recherche une bonne source pour travailler sur des entiers long, très long... Et celle-ci est la meilleur base que j'ai trouvé.

Question optimisation il faut tout refaire à neuf, puisque utiliser les strings c'est un gouffre à performances.

Quelqu'un connais une meilleur source ... en VB non .NET ?
us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
5 sept. 2005 à 23:55
Bonsoir,

J'ai pas tout testé, mais mes algos sur les grands nombres ne semble plus rapides... Néanmoins, il y a dans ta programmation des idées très intéressantes... JE note dans la fonction Comparer le fait d'équilibrer la longueur des chaînes avant la comparaison... et si les nbs à comparer ne sont pas signé, alors on peut encore simplifier la fonction, en utilisant StrComp, il me semble... avec :

=

Function Comparer(x1 As String, x2 As String) As Integer
' comparaison = -1 , 0 ou 1 de x1 par rapport à x2
'! avec x1 et x2 positifs !

Comparer = StrComp(String$(Len(x2), "0") & x1, String$(Len(x1), "0") & x2, vbTextCompare)

End Function

=

Pour augementer la rapidité, environ de 20%, dans toutes les sub, il suffit d'utiliser la Right$, Mid$, String$ ... , au lieu de leur équivalent sans $ !

JE pense qu'il y a encore beaucoup d'endroits où l'on peut optimiser... je regarderais un peu plus tard ton code plus précisement...

Juste une petite remarque, dans PasdeZero, j'aurais bien vu une boucle, plutôt que toutes ces lignes...

Par exemple :

=

Function PasDeZero(x0 As String) As String
Dim uv As Integer
uv = Len(x0)

for t=1 to 9
If InStr(1, x0, str$(t)) > 0 And InStr(1, x0, str$(t)) < uv Then uv = InStr(1, x0, str$(t))
next t

PasDeZero = Right(x0, (Len(x0) - uv) + 1)
End Function

=

J'ai pas testé, mais cela devrait marcher...

Amicalement,
Us.
fricotin92 Messages postés 2 Date d'inscription dimanche 2 juillet 2000 Statut Membre Dernière intervention 24 août 2005
24 août 2005 à 01:01
Merci GOTH: je vais essayer la méthode karatsuba quand je l'aurai assimilée (je ne suis pas un fan des formules sans exemples concrets). Je ne suis pas certain que l'économie des multiplications par l'augmentation des additions et soustractions soit un plus, mais je vais y réfléchir.

BOAG: comment procèdes-tu pour générer les images ? Je cherche évidemment un moyen de représentation graphique permettant de déduire les facteurs d'un nombre composé et cela m'intéresse.
boag Messages postés 2 Date d'inscription vendredi 28 mars 2003 Statut Membre Dernière intervention 23 août 2005
23 août 2005 à 12:02
fricotin je tiens a te dire que je tadore !!!
je me suis passionné pour les algorythmes de factorisation depuis lannée dernieres et là javais envie de testé différentes idées sans avoir encore gérer les grands nombres
je pense qua la finalité il faudra passer au langage c mais déja ça menleve une grosse épine davoir a éviter toute ces formule pour la gestion de grand nombres
voilà c marrant jai vu ton source ce matin et tu lavais postais la nuit meme... comme quoi
jai fais des découvertes plus ou moins interressantes sur les nombres premiers
javais débuté par la visualisuation en images de tables de facteurs et jobtenais des formes fractales jen ai encore rien fait ça pourrai tinterressé...
merci pour ce source !
cs_goth Messages postés 82 Date d'inscription lundi 23 décembre 2002 Statut Membre Dernière intervention 23 août 2005
23 août 2005 à 09:34
Pour ta fonction de multiplication, essaie de voir du coté de karatsuba, qui est un algorithme de multiplication pour les grands nombres (per ex: http://gersoo.free.fr/docs/karat/kar.html)