Introduction `
a la Cryptologie
Chapitre 2 : Arithm ´
etique des nombres entiers
Michael Eisermann (Institut Fourier, UJF Grenoble)
Ann´
ee 2008-2009
IF / IMAG, Master 1, S1-S2
document mis `
a jour le 7 juillet 2009
FOURIER
INSTITUT
f
i
www-fourier.ujf-grenoble.fr/~eiserm/cours # crypto
1/41
Objectifs
Questions de base :
1Qu’est-ce que les nombres entiers ?
2Comment les impl´
ementer sur ordinateur ?
D´
eveloppement math´
ematique :
Retracer le fondement axiomatique.
D´
efinir les op´
erations arithm´
etiques et ´
etablir leurs propri´
et´
es.
Introduire notamment la division euclidienne des entiers.
D´
eveloppement algorithmique :
La num´
eration positionnelle est une repr´
esentation efficace.
´
Etablir des algorithmes pour les op´
erations arithm´
etiques.
Estimer leur complexit´
e : coˆ
ut en temps et en m´
emoire.
2/41
Sommaire
1Remarques historiques
2Langage math´
ematique
3Les nombres naturels N
4Impl´
ementation artisanale
5Les nombres entiers Z
6Impl´
ementations professionnelles
3/41
Qu’est-ce que les nombres naturels ?
Num´
eration romaine utilis´
ee jusqu’au moyen ˆ
age :
I, II, III, I V, V, V I, V I I, V I II, I X, X, . . .
Num´
eration indo-arabe utilis´
ee de nos jours :
0,1,2,3,4,5,6,7,8,9,10, . . .
Quatre op´
erations arithm´
etiques :
DXXXVII 537
+LXXIX +79
DMXVI 616
MMVIII 2008
LXXIX 79
MCMXXIX 1929
XLIII 43
×LXXIX ×79
MMMXXXIIIX 3397
MMMXXXIIIX 3397
÷LXXIX ÷79
XLIII 43
!
Ceci n’est pas une d´
efinition : il ne s’agit que d’exemples.
4/41
Heuristique
Les nombres naturels sont l’abstraction du processus de compter :
Le nombre initial est not´
e0.
`
A chaque nombre naturel non associe son successeur Sn.
Ceci permet d ´
ej`
a de nommer quelques petits exemples :
1 := S0,2 := S1,3 := S2,4 := S3,5 := S4,
6 := S5,7 := S6,8 := S7,9 := S8,10 := S9, . . .
On sous-entend tacitement :
1Le nombre 0est le point de d´
epart.
2Ce processus continue infiniment sans jamais boucler.
3Tout nombre naturel est ainsi atteint.
Toute la subtilit´
e est donc de pr´
eciser les trois petits points . . .
§3.1 5/41
D´
efinition des nombres naturels
D´
efinition (nombres naturels)
Les nombres naturels forment un ensemble Nmuni d’un ´
el´
ement initial 0N
(z´
ero) et d’une application S:NN(successeur).
Ce triplet (N,0,S)satisfait aux axiomes suivants :
1Pour tout ndans Non a Sn6= 0.
Autrement dit, 0n’appartient pas `
a l’image de S.
2Pour tout n6=mdans Non a Sn6=Sm.
Autrement dit, Sest injectif.
3Si ENv´
erifie 0Eet S(E)E, alors E=N.
C’est l’axiome de r´
ecurrence.
§3.1 6/41
La construction par r ´
ecurrence
Soient Xun ensemble, x0Xun ´
el´
ement, f:XXune fonction.
On souhaite construire la suite r ´
ecurrente
x0, x1=f(x0), x2=f(x1), x3=f(x2), . . .
On cherche donc `
a construire une application NXcomme suit :
N0S
7→ 1S
7→ 2S
7→ 3S
7→ 4S
7→ 5S
7→ ...
↓↓↓↓↓↓
X x0
f
7→ x1
f
7→ x2
f
7→ x3
f
7→ x4
f
7→ x5
f
7→ ...
Une telle construction est toujours possible et mˆ
eme unique :
Th´
eor`
eme (Dedekind, 1888)
Soient Xun ensemble, x0Xun ´
el´
ement, f:XXune fonction. Alors il
existe une unique fonction g:NXv´
erifiant g(0) = x0et gS=fg,
c’est-`
a-dire que g(Sn) = f(g(n)) pour tout nN.
§3.2 7/41
L’addition des nombres naturels
D´
efinition (addition)
Il existe une unique application +: N×NNd´
efinie par m+ 0 := mpuis
par r´
ecurrence par m+Sn:= S(m+n)pour tout m, n N.
Remarquons que n+ 1 = n+S0 = S(n+ 0) = Sn.
Ceci permet de remplacer Spar la notation n7→ n+ 1.
Proposition
L’op ´
eration +, appel´
ee addition, jouit des propri ´
et´
es suivantes :
a, b, c N: (a+b) + c=a+ (b+c)(A1 : associativit´
e)
a, b N:a+b=b+a(A2 : commutativit´
e)
aN: 0 + a=a(A3 : ´
el´
ement neutre)
L’addition est cancellative : m+k=n+kimplique m=n.
§3.3 8/41
La multiplication des nombres naturels
D´
efinition (multiplication)
Il existe une unique application ·:N×NNd´
efinie par m·0 := 0 puis par
r´
ecurrence m·Sn:= m·n+mpour tout m, n N.
Proposition
L’op ´
eration ·, appel´
ee multiplication, jouit des propri ´
et´
es suivantes :
a, b, c N: (a·b)·c=a·(b·c)(M1 : associativit´
e)
a, b N:a·b=b·a(M2 : commutativit´
e)
aN: 1 ·a=a·1 = a(M3 : ´
el´
ement neutre)
La multiplication est cancellative :
si m·k=n·ket k6= 0, alors m=n.
La multiplication est distributive sur l’addition :
k·(m+n) = (k·m) + (k·n).
§3.4 9/41
L’exponentiation des nombres naturels
D´
efinition (exponentiation)
Il existe une unique application ˆ: N×NNd´
efinie par a0:= 1 puis par
r´
ecurrence aSn:= an·apour tout a, n N.
Proposition
L’op ´
eration ˆ, appel´
ee exponentiation, jouit des propri´
et´
es suivantes :
a1=aet am+n=am·anet (am)n=am·n.
Si n6= 0, alors an=bnimplique a=b.
Si a /∈ {0,1}, alors am=animplique m=n.
§3.4 10/41
L’ordre des nombres naturels
D´
efinition
On d´
efinit la relation sur Nen posant mnsi et seulement s’il existe
kNtel que m+k=n.
Proposition
La relation est un ordre total sur N.
C’est-`
a-dire que pour tout a, b, c Non a :
aa(r´
eflexivit´
e)
abet baimpliquent a=b(antisym´
etrie)
abet bcimpliquent ac(transitivit´
e)
abou ba(totalit´
e)
Proposition
L’ensemble Nmuni de sa relation d’ordre est bien ordonn´
e :
Tout sous-ensemble non vide XNadmet un plus petit ´
el´
ement,
c’est-`
a-dire qu’il existe mXtel que mxpour tout xX.
§3.5 11/41
Les op´
erations respectent l’ordre
Proposition
L’addition et la multiplication respectent l’ordre sur N:
mnimplique m+kn+k.
mnimplique mk nk.
Il en est de mˆ
eme pour l’in´
egalit´
e stricte :
m < n implique m+k < n +k.
m < n implique mk < nk pourvu que k6= 0.
Pour l’exponentiation on obtient :
Si m < n et k6= 0, alors mk< nk.
Si m < n et a6∈ {0,1}, alors am< an.
D´
efinition (soustraction)
Dans Nla soustraction nmn’est d´
efinie que si nm.
Dans ce cas il existe kNtel que m+k=n.
Ce nombre est unique, on peut donc d´
efinir nm:= k.
§3.5 12/41
Divisibilit´
e et division
D´
efinition (divisibilit´
e)
On d´
efinit la relation |sur Nen posant m|n(dit «mdivise n»)
si et seulement s’il existe kNtel que mk =n.
Proposition
La relation |est un ordre partiel sur N.
C’est-`
a-dire que pour tout a, b, c Non a :
a|a(r´
eflexivit´
e)
a|bet b|aimpliquent a=b(antisym´
etrie)
a|bet b|cimpliquent a|c(transitivit´
e)
D´
efinition (division)
Dans Nla division a/b n’est d´
efinie que si b|a.
Dans ce cas il existe qNtel que bq =a.
`
A l’exception du cas a=b= 0 le nombre qest unique.
Sous cette pr´
ecaution on peut donc d´
efinir a/b := q.
§3.6 13/41
Division euclidienne
Proposition (division euclidienne)
Soient a, b Ndeux nombres naturels tels que b6= 0.
Alors il existe une unique paire (q, r)N×N
v´
erifiant a=b·q+ret 0r < b.
Notation
Dans la situation pr´
ec´
edente on appelle
aquo b:= qle quotient et
arem b:= rle reste
de la division euclidienne de apar b.
Remarque
Si b|aalors a=bc pour un certain cnot ´
ec=a/b.
La division euclidienne nous donne a=bq +r.
L’unicit ´
e assure que q=a/b et r= 0.
§3.7 14/41
Num´
eration positionnelle
On fixe un nombre naturel B2que l’on appelle base dans la suite.
Th´
eor`
eme (num´
eration en base B)
Alors tout nombre naturel a1s’´
ecrit de mani `
ere unique comme
a=anBn+an1Bn1+· · · +a1B+a0
o`
ua0, a1,...,an1, ansont des nombres naturels v ´
erifiant 0ak< B pour
tout k= 0,...,nainsi que an6= 0 (normalisation).
Id´
ee de la preuve : on applique la division euclidienne.
a= (anBn1+an1Bn2+· · · +a1B0)
|{z }
aquoB
B+a0
|{z}
aremB
Ceci permet de trouver a0=arem B. On conclut par r´
ecurrence.
§3.8 15/41
Num´
eration positionnelle : notation
De mani`
ere abr´
eg´
ee on ´
ecrit aussi
han, an1,...,a1, a0iB:= anBn+an1Bn1+· · · +a1B+a0.
D´
efinition
On appelle a= (a0, a1,...,an)la repr ´
esentation de aen base B.
On appelle lenB(a) := n+ 1 la longueur de aen base B.
Lorsque Best assez petit, on peut repr´
esenter chaque nombre ai
v´
erifiant 0ai< B par un symbole distinctif, appel ´
echiffre.
En base fix´
ee (disons B= 10) ceci m`
ene `
a une notation comme
1729 := h1,7,2,9idec := 1 ·103+ 7 ·102+ 2 ·101+ 9 ·100.
C’est simple et efficace, mais il fallait y penser !
§3.8 16/41
Repr´
esentation des nombres naturels
Pour une impl´
ementation concr`
ete sur ordinateur il nous faut
une repr´
esentation des donn´
ees et
une impl´
ementation des op´
erations.
Question pr´
eparatoire : comment faire ?
Ici on repr´
esente a=Pm
i=0 aiBipar la suite a= (a0,...,am).
!
On exigera que cette repr´
esentation asoit normalis ´
ee :
0ai< B et an6= 0.
!
Si une op´
eration risque de finir avec une suite non normalis´
ee
on effectue une normalisation pour propager les retenues.
§4.1 17/41
D´
efinition de la classe Naturel
typedef int Indice; // type pour stocker un indice
typedef short int Chiffre; // type pour stocker un chiffre (ou deux)
const Chiffre base= 10; // base entre 2 et 16, ici on choisit 10
const char chiffre[]= "0123456789abcdef"; // chiffres pour l’affichage
class Naturel
{
public:
vector<Chiffre> chiffres; // suite des chiffres dans la base donn´ee
Indice size() const {return chiffres.size(); };
bool zero() const {return chiffres.empty(); };
void clear() { chiffres.clear(); };
void raccourcir();
void normaliser();
};
§4.2 18/41
Stockage des chiffres
Supprimer des z ´
eros superflus :
void Naturel::raccourcir()
{
while ( !chiffres.empty() && chiffres.back() == Chiffre(0) )
chiffres.pop_back();
};
Acc´
eder au chiffre aipar a[i] via une indexation s´
ecuris ´
ee :
Chiffre Naturel::operator[] ( Indice i ) const
{
if ( i<0 || i>=Indice(chiffres.size()) )
return Chiffre(0);
else
return chiffres[i];
};
§4.2 19/41
Propager les retenues
void Naturel::normaliser()
{
Chiffre retenue= 0;
for( Indice i=0; i<Indice(chiffres.size()); ++i )
{
chiffres[i]+= retenue;
retenue = chiffres[i]/base;
chiffres[i]%= base;
};
while( retenue > 0 )
{
chiffres.push_back( retenue % base );
retenue/= base;
};
raccourcir();
};
§4.2 20/41
1 / 11 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !