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

Signaler
Messages postés
82
Date d'inscription
lundi 23 décembre 2002
Statut
Membre
Dernière intervention
23 août 2005
-
 jl47 -
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.
Messages postés
51
Date d'inscription
samedi 21 octobre 2000
Statut
Membre
Dernière intervention
10 octobre 2011

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.
Messages postés
248
Date d'inscription
vendredi 10 novembre 2000
Statut
Membre
Dernière intervention
19 décembre 2008

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 ?
Messages postés
2065
Date d'inscription
lundi 11 avril 2005
Statut
Membre
Dernière intervention
14 mars 2016
10
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.
Afficher les 7 commentaires