Les Snippets

Connexion

Exponentiation Modulaire Rapide

Niveau requis pour utiliser/comprendre cette source : 1 ( Débutant )
Créé le 26/11/2009 23:37:29 et initié par us_30 [Liste]
Date de mise à jour : 07/12/2009 16:27:39
Vue : 6587
Catégorie(s) : Maths
Langage sélectionné : Delphi 5
Langages dispo pour ce code :
- VB6, VBA
- Delphi 5
- Tcl
- Voir tous les langages pour ce code snippet



Langage : Delphi 5
Date ajout : 03/12/2009
Posté par Bacterius [Liste]
DateMAJ : 07/12/2009
function ExpMod(n, e, m: Longword): Longword;
begin
  Result := 1{ Initialisation }
  while e <> 0 do { Tant que l'exposant n'est pas arrivé à 0 }
  begin
    if (e and 1) <> 0 then { Si e est impair }
    begin
      Dec(e); { On décrémente e }
      Result := Result * n; { On multiplie le résultat par n }
    end;
   Result := Result mod m; { On prend le résultat modulo m }
   e := e shr 1; { On divise e par deux (décalage binaire ici ) }
   n := Sqr(n) mod m; { On effectue l'exponentiation modulaire }
  end;
end;
Remarque :
Effectue une exponentiation modulaire de n à la puissance e modulo m.
Attention à ne pas mettre de trop grandes valeurs de n, car si n² > 2^32, la fonction ne va plus fonctionner à cause des limitations du Longword.
Exemple : ExpMod(61, 3, 23) = 17

Snippets en rapport avec : Exponentiation, Modulaire, Rapide



Codes sources en rapport avec : Exponentiation, Modulaire, Rapide

{JAVA / J2EE} L'EXPONENTIATION MODULAIRE
un programme sert a calculer l’opération de l'exponentiation modulaire ( Nombre ^ Puissance ) ...

{C / C++ / C++.NET} MEILLEURE MÉTHODE POUR CALCULER UN PUISSANCE
la méthode la plus naive pour calculer par ex: x^15 = x*...*x(14 operations) ---------- mieux: x...

{Visual Basic, VB6, VB.NET, VB 2005} LE PLUS SIMPLE PROGRESSBAR AU MONDE
le plus simple ProgressBar au monde. une Picturebox, une Imagebox, un Label et très peu de lignes de...

{Flash} CLASS IMAGE ET IMAGEEVENT
Extention de Bitmap ne chargeant qu'un seul et unique fichier pour toutes les références faisant app...

{C / C++ / C++.NET} TROUVER LES NOMBRES PREMIERS INFÉRIEURS À UNE LIMITE DONNÉE
Liste tout les nombres premiers inférieurs à la limite que l'utilisateur renseigne. S'arrete si la ...

{Delphi} FICHIER DUPLIQUÉ AVEC UNE TABLE DE HACHAGE
Ce petit programme permet de rechercher des fichiers dupliqués à l'aide d'une table de hachage, les ...

{Flash} AS3 PROTOTYPE
Programez différent... J'ai pas eu le temps de mettre de commentaire puisque j'ai fait cette sour...

{C / C++ / C++.NET} EASYLIB WIN32 C++ POUR DU PROTOTYPAGE RAPIDE
EasyLib est une bibliothèque de petites classes en c++ pour créer rapidement des application Win32. ...

{Visual Basic, VB6, VB.NET, VB 2005} LIGHT CODES-SOURCES
(ex-Light VBFrance) Ce programme permet de surfer sur Codes-Source très simplement. Le temps de ch...

{C / C++ / C++.NET} LE QUICKSORT NON-RECURSIF ET L'IMPACT DE L'INSERTIONSORT SUR SES PERFORMANCES
Je depose cette source en rapport avec une discussion sur les performances du tri rapide (quicksort)...