5
et ns’écrit avec kchiffres en base b.
On applique le logarithme à l’inégalité bk−1≤n < bk. On obtient
log(bk−1)≤log n < log bkc’est à dire k−1≤log n
log b< k
et ⌊logb(n)⌋+ 1 = k.
2.3. Exponentation modulaire rapide. En cryptographie, il est extrêmement important de pouvoir
calculer rapidement bmmod n. Ce genre d’opération est généralement effectué sur des nombres qui
contiennent 150, 200 voire 300 chiffres. Dans ce contexte il est hors de question de d’abord calculer bm
puis de réduire modulo n.
L’idée est d’utiliser l’écriture binaire de m(en base 2). Soit m= (ak−1,...,a1, a0)2. On a alors
bm=bak−1·2k−1
. . . ba1·2ba0
Pour calculer bmil suffit donc de calculer b, b2,(b2)2,(b4)2. . . b2k. Lorsqu’on a ces valeurs, il suffit de mul-
tiplier entre elles les valeurs b2jqui vérifient aj= 1. On obtient ainsi bn.
Exemple 2.10. Supposons que l’on veuille calculer 311. On a 311 = 38·32·3. On calcule successivement
32= 9,34= 92= 81,38= (81)2= 6561.
Finalement on obtient 311 = 6561 ·9·3 = 177 147.
Dans le cas modulaire, c’est encore plus simple, on peut (et il faut) réduire modulo nà chaque étape.
Données :b, m, n ∈N∗
Résultat :bmmod n
n= (ak−1,...,a0)2
x:= 1
power := bmod n
pour i= 0 àk−1faire
si ai= 1 alors
x:= x·power mod m
fin
power := power ×power
fin
retourner xAlgorithme 5: Exponentiation modulaire
Exemple 2.11. On utilise l’algorithme pour calculer 3644 mod 645. Tout d’abord, on calcule que 645 =
(1010000100)2. On a
i= 0 a0= 0 x= 1 power = 32mod 645 = 9
i= 1 a1= 0 x= 1 power = 92mod 645 = 81
i= 2 a2= 1 x= 81 power = 812mod 645 = 111
i= 3 a3= 0 x= 81 power = 1112mod 645 = 66
i= 4 a4= 0 x= 81 power = 662mod 645 = 486
i= 5 a5= 0 x= 81 power = 4862mod 645 = 126
i= 6 a6= 0 x= 81 power = 1262mod 645 = 396
i= 7 a7= 1 x= 471 power = 3962mod 645 = 81
i= 8 a8= 0 x= 471 power = 812mod 645 = 111
i= 9 a9= 1 x= 36 power = 1112mod 645 = 36
2.4. Algorithme de tri : Premiers exemples. Un algorithme de tri est, en informatique ou en mathé-
matiques, un algorithme qui permet d’organiser une collection d’objets selon un ordre déterminé. Dans ce
cours, nous allons étudier de nombreux algorithmes de tri. Nous commençons ici avec les plus simples, le
tri à bulle et le tri par insertion.