begin process at 2012 05 29 23:34:54
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Maths & Algorithmes

 > 

librairie grands nombres ^


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

librairie grands nombres ^

jeudi 29 juillet 2004 à 13:50:21 | librairie grands nombres ^

coucou747

Administrateur CodeS-SourceS
Je dévelope en ce moment une librairie qui me permetrais de gérer des nombres de 1024 bits..
Je ne fais que du C... Voici la sctructure qui contiendra le nombre :
typedef struct {
char valeur[256]; int unsigned long taille; }grandnombre;

Je ne fère pas les nombres négatifs, ni les nombres a virgules (totalement inutile en rsa, pour ces calculs, en général, on transforme la science en machine a fric.. ex : le calcul de pi ect....)

Voila, ça donne a peu près ça... dans taille, on a la taille du nombre, taille sert uniquement a gagner du temps, je pourais éviter de définir en dur le tableau comme me l'a dit kirua avec malloc et realloc, mais en fait, j'en ai pas vraiment envi car on perd du temps, ce qui est précieux dans les histoires de calculs...

J'ai eu quelques problèmes pour la division et le modulo (car on doit prendre b en entier) mais j'y suis arrivé, si qqn veut les sources complètes, il me mail, je lui répondrais...

Voici mon problème : pour les opérations : + - * pas de problèmes, pour / et % un peu plus dur, mais j'y suis arrivé, je bloque a ^ en effet si je fait a=b ^ c alors j'aurais un peu bcp de calculs si je fais
a=b
e=0;
while(e<c)
a=a*b

si je fais ça, j'aurais un peu bcp de calculs surtout que cette librairie devrait servir a des calculs genre rsa...
jeudi 29 juillet 2004 à 16:44:09 | Re : librairie grands nombres ^

leprov

une idée spontanée mais pas forcément judicieuse (je sais pas, cest a reflechir, mais la chui pas assez enf forme pr y arriver) : calcul recursif selon la methode indienne (je crois ke ca sappelle comme ca). ca pourrait etre plus rapide, mais a vérifier.
sinon l'elever a la puissance de 2 la plus proche puiq finir comme tas fait ca peut pas le faire?
jeudi 29 juillet 2004 à 16:44:38 | Re : librairie grands nombres ^

leprov

cest des idées pas forcement bonnes et en vrac, mais on sait jamais. cest les seules ke jai et chui trop fatigué pr reflechir plus lol
jeudi 29 juillet 2004 à 16:51:50 | Re : librairie grands nombres ^

BruNews

Administrateur CodeS-SourceS
Recursivite a bannir ici, trop long en temps de calcul.
Va jeter un oeil sur codeproject ou sourceforge, me souviens plus exactement lequel (1er je crois), une classe grand nombre performante a ete publiee la semaine derniere.
PS: + de la moitie de la classe est implementee en asm, vitesse oblige dans les divisions.

ciao...
BruNews, Admin CS, MVP Visual C++
jeudi 29 juillet 2004 à 17:50:54 | Re : librairie grands nombres ^

coucou747

Administrateur CodeS-SourceS
oulala l'asm c'est pas pour moi, mais les divisions, j'ai déja réussi... j'ai pas fais de test de vitesse, mais pour un petit nombre, on attend pas... (évidement, mes test ont été fait avec des nombres relativement petits pour la vitesse de vérification...)
jeudi 29 juillet 2004 à 17:53:07 | Re : librairie grands nombres ^

BruNews

Administrateur CodeS-SourceS
Fais une boucle avec grands nombres, tu verras si c'est viable.

ciao...
BruNews, Admin CS, MVP Visual C++
jeudi 29 juillet 2004 à 23:34:45 | Re : librairie grands nombres ^

coucou747

Administrateur CodeS-SourceS
boucle avec des grands nombres... des nombres de 1024 bits... je doute avoir le courage nécessaire a cette vitesse d'execution...

en fait, en rsa, on fait
b=a^d%n

et b a d et n sont énormes, le plus grand nombre ici, c'est n, mais je pe penses qas que cette vitesse soit satisfesante...
vendredi 30 juillet 2004 à 19:39:32 | Re : librairie grands nombres ^

cosmobob

faire a^d c'est pas pareil que a^d modulo n.
(si a et d sont des grands nombres).
a^d va à coup sur etre immensément long (et en fait ca n'est jamais fait), alors que a^d mod n peut se faire en en temps en O(log(d)) (c'est une simple exponentiation modulaire).

voila...
a+ ;)
vendredi 30 juillet 2004 à 19:52:58 | Re : librairie grands nombres ^

coucou747

Administrateur CodeS-SourceS
oulala je te suis plus moi, c'est aussi dur a faire sachant des les % et / sont rapides a effectuer, mais les calculs sont vraiment longs pour l'exposant...

b=a^d % n peut aussi se faire de cette façon la :

b = 1;
k=0;
while (k<d){
b=a*b;
b=b%n;
k++;
}

mais la, j'apelles 2*d fonctions et comme ces fonctions ont beau être rapides, ça prends quand même un peu de temps... De plus, je rapelles le principe de calcul des clefs :
p premier;
q premier;
n=p*q;
f=(p-1)*(q-1);
e premier avec f;
i=1;
while ( i%e!=0 )
{
i=i+f;
}

Donc, je sais que p et q doivent êtres énormes, e, je ne sais pas exactement quelle doit être sa taille, mais je supposes aussi que e ne doit pas être un petit nombre...


d= i / e ;
dimanche 1 août 2004 à 01:58:49 | Re : librairie grands nombres ^

Stepharcher

Si tu veux l'une des bibliothèques les plus performante du moment... recherche "GMP" sur google.

Stéph

1 2

Cette discussion est classée dans : taille, calculs, nombres, librairie, grands


Répondre à ce message

Sujets en rapport avec ce message

traviller avec de grands nombres [ par alfred289 ] est-ce que quelqu'un aurait une façon simple de travailler avec de très grands nombres ( des miliers de chiffres par exemple) class pour manipuler des grands nombres [ par Orkblutt ] Salut,j'aimerai implementer une classe qui me permettrai de manipuler (+,-, /,*,%) des grands nombres (Nb>32bits) mais je ne sais pas du tout comment Multiplication des grands nombres. [ par J_r_m ] Salut @ tous !!!Je suis debutant en C, et je voudrais pouvoir multiplier deux "grands" nombres de plus de dix chiffres en base 10.Je pensais donc met listes chainées gestion des grands nombres [ par zeth_bw ] bonjour  j'ai un petit probleme tres algorithimique je manipule des listes chainées sur les grands nombres. cad par exemple 10245 donne 5->4->2->0->1l Options de compilation Visual C++ 2005 [ par skirby ] Bonjour tout le monde,Pourriez vous me dire quelles sont les meilleurs options de compilation sous Visual C++ 2005 pour les exécutables et les librair Multiplication de grands nombres [ par zekicker ] Salut,Je voudrais savoir si qq1 connait une méthode pour effectuer une multiplication de grands nombres comme 467684700 *655000000. En effet, j'obtien combinaisons avec des grands nombres [ par marieinthesky ] Bonjour,j'ai besoin de calculer des arrangements et des combinaisons avec des nombres assez grands, tous mes essais de programmes marchent sur des pe Comment générer de très grand nombres aléatoires? [ par Erebus ] Bonjour!J'ai un petit problème pour générer de grands nombres de manière aléatoire. J'utilise une portion d'un code-source posté sur ce site, mais les grands nombres [ par freeskieuse ] Bonjour,je suis debutante en C++, j'ai un projet à faire, mais je ne sais pas du tout comment gèrer...SUJET:Pour la création d'entiers arbitrairement Calcul grands nombres avec chaines de caractères [ par lectpe ] Bonjour. J'ai presque fini de réaliser un logiciel de math. L'utilisateur peut entrer en ligne de commande ce qu'il veut calculer et le logiciel lui


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 6,224 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales