MANIPULATION TRÉS RAPIDE DE TRÉS GRANDES NOMBRES ENTIERS + FONCTIONS DE BASE DE

Messages postés
270
Date d'inscription
mardi 24 juillet 2007
Statut
Membre
Dernière intervention
7 juin 2018
- - Dernière réponse : cs_Jean_Jean
Messages postés
637
Date d'inscription
dimanche 13 août 2006
Statut
Membre
Dernière intervention
13 décembre 2018
- 6 juil. 2012 à 19: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/54273-manipulation-tres-rapide-de-tres-grandes-nombres-entiers-fonctions-de-base-de-l-arithmetique-modulaire-nombres-premiers

cs_Jean_Jean
Messages postés
637
Date d'inscription
dimanche 13 août 2006
Statut
Membre
Dernière intervention
13 décembre 2018
2 -
Je viens de découvrir ton travail...
Super travail Kamel!
ça m'aide à comprendre l'assembleur en plus dont j'ai besoin en ce moment!
yvessimon
Messages postés
644
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
9 janvier 2017
-
Bonjour,

Bravo cela fonctionne très bien sur D7.

Un détail:
sur les deux boutons " a^^b " et " a^^b mod "
c'est un seul signe " ^ " qu'il faut voir .

Merci
Salutations
cs_pseudo3
Messages postés
270
Date d'inscription
mardi 24 juillet 2007
Statut
Membre
Dernière intervention
7 juin 2018
-
Re-Bonjour Kamel78,

Je retire ce que viens d'écrire : Je n'avais pas remarqué le Sous-ZIP nommé 'HugeComputationDemo.zip' qui était inclu dans le ZIP et qui contient les nouveautés citées dans l'historique ci-dessus.

A mon avis il est inutile de surcharger le ZIP avec le sous-dossier nommé 'Demo old'.

Par ailleurs je signale : [Erreur fatale] GeneratorDemo.pas(7): Fichier non trouvé : 'PBNumEdit.dcu'
Vérification faite on peut virer PBNumEdit du uses car PBNumEdit1 n'est pas utilisé.

En plus on trouve Demo.dpr et HugeComputation.dpr qui semblent être la même chose : C'est lequel des deux qui est le meilleur ???

Pour info : le Help.doc (daté du 01/06/2012 ???) malgré cette datation bizarre n'est pas à jour.

A+.
cs_pseudo3
Messages postés
270
Date d'inscription
mardi 24 juillet 2007
Statut
Membre
Dernière intervention
7 juin 2018
-
Bonjour Kamel78,

Je viens de télécharger la dernière version du 11 mai 2012 02:48:59 dont l'historique ci-dessus dit :
"ajout des fonctions : Function HexToHug(s:string):Hugint; Function Hugtobin(a :Hugint):string; Function BintoHug (s:string):Hugint; Function OctaltoHug(S:string):Hugint; Function HugtoOctal(a:Hugint):string; Ajout d'une bien meilleur application de démonstration !"
... mais il y a dû y avoir une erreur de manipulation car on y retrouve seulement le sous-dossier nommé 'Demo old' et vérification faite on n'y trouve aucune des fonctions précitées.

En tous cas : Chapeau pour if IsHugPrime(M22,0.99) qui donne "M22 est Premier, Mis : 56 s 718,904 ms" : ça décoiffe !!!(Intel Core i7-2700K à 3,5 GHz.

A+.
pgl10
Messages postés
310
Date d'inscription
samedi 18 décembre 2004
Statut
Membre
Dernière intervention
6 juillet 2019
1 -
J'ai une version de mon logiciel OPIX où le test de primalité est effectué avec la bibliothèque GMP connue pour être optimisée. Pour le 22-ième nombre premier de Mersenne : M22 = 2^9941 - 1 qui a 2993 chiffres décimaux le logiciel Demo.exe ici présent de Kamel78 et GMP dans mon logiciel mettent tous les deux 2 minutes et une douzaine de secondes pour vérifier la primalité de M22 sur mon ordinateur qui est un peu vieux. C'est un bien beau résultat.
cs_pseudo3
Messages postés
270
Date d'inscription
mardi 24 juillet 2007
Statut
Membre
Dernière intervention
7 juin 2018
-
Bonjour Kamel78,

OK merci pour la réponse posée pour le cas où les HugInt auraient offert une possibilité cachée.
En tous cas, je répète ce que disait Rekin85 : "C'est balaise et rapide. TRES BIEN !"

A+.
cs_kamel78
Messages postés
7
Date d'inscription
samedi 21 décembre 2002
Statut
Membre
Dernière intervention
9 mai 2012
-
Bonjour Pseudo3

c'est une question très intéressante, j'ai essayer pendant des jours et des nuits de trouver une méthode qui permet de diviser un nombre a (en représentation binaire) d'une manière triviale,(c'est a dire sans utiliser la division classique). Malheureusement ca n'existe pas!. En binaire en peut faire ceci pour la division sur 2 (un shift), en octale par exemple un shift est une division par 8, en hexadécimale c'est une un shift est une division par 16 et bien sur en décimale c'est une division par 10 !
Le seul moyen reste la divison classique (donc couseuse en temps d'exécution). Et c'est la raison pour laquelle le l'élaboration de la fonction HugtoStr (conversion binaire ->décimale) été un casse tête et nécessité l'implémentation de la division au préalable. Si vous trouver un jour une solution plus rapide alors faite moi savoir !!!!


Merci
cs_pseudo3
Messages postés
270
Date d'inscription
mardi 24 juillet 2007
Statut
Membre
Dernière intervention
7 juin 2018
-
Bonjour,

Petite question : Y'a-t-il un moyen pour calculer instantanément "b:=a div 10" avec a et b du type Hugint, (un peu comme si on faisait le Delete du zéro terminal d'une string-numérique-base10) ça éviterait d'avoir à utiliser la procédure DivideModHug(a, b: Hugint; var Q, res: hugint) juste pour diviser par 10 car une division ça prend toujours un certain temps ???

A+.
Rekin85
Messages postés
25
Date d'inscription
dimanche 11 décembre 2011
Statut
Membre
Dernière intervention
17 octobre 2015
-
Merci pour le petit fichier d'aide. J'ai procédé à quelques essais des fonctions de base de calculs. C'est balaise et rapide. TRES BIEN !

A noter toutefois qu'il faille penser à "ajuster" la capacité des array pour ne pas aboutir à des exceptions de dépassements de capacité... Pourquoi ne pas avoir tout tablé sur de l'illimité en taille par principe ?
cs_kamel78
Messages postés
7
Date d'inscription
samedi 21 décembre 2002
Statut
Membre
Dernière intervention
9 mai 2012
-
j'ai ajouter un petit fichier d'aide en français pour ceux qui s'intéresse , et désoler pour les erreurs car c'est ma deuxième langue (la troisième si je compte le Pascal !!...)
cs_pseudo3
Messages postés
270
Date d'inscription
mardi 24 juillet 2007
Statut
Membre
Dernière intervention
7 juin 2018
-
Bonjour,

OK la dernière version téléchargeable compile correctement sous Delphi-5 après suppression de QForms dans le uses et après suppression des Variants dans les autres uses.

Mais le compilo ajoute des avertissements et les suivants ont attiré mon attention : j'ai toute une série d'avertissements du style :
[Avertissement] FirstPrimesTable.pas(61): L'expression constante dépasse les limites de sous-étendue
...
[Avertissement] FirstPrimesTable.pas(122): L'expression constante dépasse les limites de sous-étendue
... et qui concernent la constante _ProdFirstPrimes:Array [0..1058] of Longint=
ce qui risque d'introduire des erreurs lors de la manipulation des nombres premiers : OUI/NON ???.

A+.
pgl10
Messages postés
310
Date d'inscription
samedi 18 décembre 2004
Statut
Membre
Dernière intervention
6 juillet 2019
1 -
Je viens de faire quelques essais préliminaires. Je note qu'on y trouve des expressions comme : grands entiers, nombres premiers, algorithme d'Euclide étendu, division de Knuth, méthode de Monté-Carlo, théorème des restes chinois, réduction de Montmogomery, algorithme de Pollard, ... Il y a là tout un ensemble de fonctionnalités complémentaires pouvant servir assez souvent en arithmétique, et avec la maîtrise des développements. Alors je dis bravo et bonne continuation.
Rekin85
Messages postés
25
Date d'inscription
dimanche 11 décembre 2011
Statut
Membre
Dernière intervention
17 octobre 2015
-
Bon ça tourne... en anglais toujours...

Evidemment la démo est parlante sur les possibilités de calculs... Maintenant il reste à "utiliser" cet outil... Alors peut-être à plus...
John Dogget
Messages postés
390
Date d'inscription
vendredi 18 juin 2004
Statut
Membre
Dernière intervention
7 mai 2009
-
La compilation marche correctement maintenant.
Par contre au niveau explication du code, on reste sur notre fin :-/
cs_kamel78
Messages postés
7
Date d'inscription
samedi 21 décembre 2002
Statut
Membre
Dernière intervention
9 mai 2012
-
Le problème de Qforms est maintenant fixé, le Zip est actualisé maintenant. c'est peut être la première fois que je met mes codes sut internet, j'ai l'habitude de les utilisé pour mon propre compte, partager c'est peut être différent !!!
yvessimon
Messages postés
644
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
9 janvier 2017
-
Bonjour,
dans DEMO en modifiant
" Form3.Memo1 ==> Form11.Memo3 "

les fonctions de base donnent un résultat.

par contre quelques explication sur les autres modules
sont nécessaires.

Merci
cs_pseudo3
Messages postés
270
Date d'inscription
mardi 24 juillet 2007
Statut
Membre
Dernière intervention
7 juin 2018
-
Re-bonjour,

Bon, on avance d'un pas : le ZIP est téléchargeable,
mais [Erreur fatale] HugIntegers.pas(9): Fichier non trouvé : 'Qforms.dcu' :
il manque soit le fichier 'Qforms.dcu' soit le fichier 'Qforms.pas'
Au fait il sert à quoi ce Qforms ???

A+.
cs_kamel78
Messages postés
7
Date d'inscription
samedi 21 décembre 2002
Statut
Membre
Dernière intervention
9 mai 2012
-
Je ne sait pas pourquoi, mais le fichie a disparu; mais je l'est encore une fois uploader, j'espère qu'il ny'aurais pas de problèmes cette fois ! merci.
Rekin85
Messages postés
25
Date d'inscription
dimanche 11 décembre 2011
Statut
Membre
Dernière intervention
17 octobre 2015
-
Bonjour,
J'ai bénéficié hier d'une "fenêtre de tir" où j'ai pu télécharger un zip. Aujourd'hui, elle n'est plus là (?!)

Je me suis donc heurté en D7 sur l'unité QForms manquante. Je n'ai donc rien pu essayer...

De prime abord sur un source qui se veut être un outil essentiel sur les grands nombres, je ferai deux remarques importantes :
1/ Tous les commentaires sont en anglais, merci pour ceux qui n'en piquent pas une...
2/ Aucune notice claire d'utilisation en accompagnement, bonjour la débrouille pour s'y retrouver et parvenir à une petite ébauche d'essais...

Je serai plus circonspect quand j'aurai pu essayer...
yvessimon
Messages postés
644
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
9 janvier 2017
-
Bonjour,

Oui pour moi aussi ?

Salutations
cs_pseudo3
Messages postés
270
Date d'inscription
mardi 24 juillet 2007
Statut
Membre
Dernière intervention
7 juin 2018
-
Bonjour,

A propos de "Le fichier Zip est mis à jour, vous pouvez trouver la démo maintenant" :
C'est vraiment bizarre, l'onglet "Télécharger" n'apparaît nulle part. !!!???

A+.
cs_kamel78
Messages postés
7
Date d'inscription
samedi 21 décembre 2002
Statut
Membre
Dernière intervention
9 mai 2012
-
Le source se compile sans problèmes avec Delphi6. Pour Pbnumedit, j'ai mis a jour le source pour ne pas utiliser se composant, L'executable est inclu aussi. Merci.
cs_kamel78
Messages postés
7
Date d'inscription
samedi 21 décembre 2002
Statut
Membre
Dernière intervention
9 mai 2012
-
Le source se compile sans problèmes avec Delphi6. Pour Pbnumedit, j'ai mis a jour le source pour ne pas utiliser se composant, L'executable est inclu aussi.
John Dogget
Messages postés
390
Date d'inscription
vendredi 18 juin 2004
Statut
Membre
Dernière intervention
7 mai 2009
-
Avec quoi la source a t'elle été compilé ?

Chez moi (Delphi 2007), ça ne compile pas ...

* [DCC Erreur] HugIntegers.pas(9): F1026 Fichier introuvable : 'Qforms.dcu'
* [DCC Avertissement] FirstPrimesTable.pas(120): W1012 L'expression constante dépasse les limites de sous-étendue
* [DCC Erreur] PrimesDemo.pas(7): F1026 Fichier introuvable : 'PBNumEdit.dcu'

Les avertissements apparaissent 554 fois pendant la compilation (quand même !!)

Pour des sources Delphi, il y a vraiment beaucoup de code en assembleur, c'est assez déroutant et limite beaucoup son interet en tant que sources.
cs_kamel78
Messages postés
7
Date d'inscription
samedi 21 décembre 2002
Statut
Membre
Dernière intervention
9 mai 2012
-
Bonjour PSEUDO3,
Le fichier Zip est mis à jour, vous pouvez trouver la démo maintenant
cs_pseudo3
Messages postés
270
Date d'inscription
mardi 24 juillet 2007
Statut
Membre
Dernière intervention
7 juin 2018
-
Bonjour,

Remarque à propos de la conclusion qui dit "L'application en jointe est une démonstration utilisant cette bibliothèque." :
Dommage que "L'application" en question ne soit pas présente dans ce qu'on obtient en téléchargeant le ZIP.

A+.