Arithmétique des entiers PGCD Calcul pratique : algorithmes d’Euclide Nombres premiers entre eux Arithmétique et Cryptographie 20 octobre 2022 Arithmétique et Cryptographie Arithmétique des entiers PGCD Calcul pratique : algorithmes d’Euclide Nombres premiers entre eux Modalités 8 CM : 20/10, 27/10, 10/11, 17/11, 24/11, 01/12, 8/12 (x2). 4 TD : semaines du 14/11, 21/11, 28/11, 05/12 1re épreuve écrite : 24/11 (30’), coeff 2. 2e épreuve écrite : 15/12 (1h30), coeff 3. ≪ projet ≫ et autres : coeff 1. Arithmétique et Cryptographie Arithmétique des entiers PGCD Calcul pratique : algorithmes d’Euclide Nombres premiers entre eux Contenu 1 Base d’arithmétique : divisibilité, Bézout, algorithme d’Euclide, nombres premiers. 2 Arithmétique modulaire : anneaux Z/nZ, indicatrice d’Euler, théorèmes de Fermat et d’Euler, exponentiation modulaire. 3 Théorème des restes chinois. 4 Cryptosystème à clé publique : RSA. 5 Echange de clé : Diffie-Hellman et ElGamal. 6 Cryptosystème à clé privée : AES. 7 Hashage cryptographique : SHA256. 8 Si on a le temps : cryptomonnaies ? Arithmétique et Cryptographie Arithmétique des entiers PGCD Calcul pratique : algorithmes d’Euclide Nombres premiers entre eux Divisibilité Nombres premiers Problèmes algorithmiques Division euclidienne Plan 1 Arithmétique des entiers Divisibilité Nombres premiers Problèmes algorithmiques Division euclidienne 2 PGCD 3 Calcul pratique : algorithmes d’Euclide 4 Nombres premiers entre eux Arithmétique et Cryptographie Arithmétique des entiers PGCD Calcul pratique : algorithmes d’Euclide Nombres premiers entre eux Divisibilité Nombres premiers Problèmes algorithmiques Division euclidienne Divisibilité Définition 1. Soient a et b deux entiers ; on dit que a divise b (ou que b est un multiple de a), et on note a b, s’il existe un entier k tel que ak = b. Exemples. 2 divise 6 ; 0 divise 0 ; 1 divise tous les entiers ; tous les entiers divisent 0 ; Pour tout entier n, n et −n divisent n ; Si a b et c d, alors ac Pour tout c 6= 0, ac bd. bc ssi a b. Arithmétique et Cryptographie Arithmétique des entiers PGCD Calcul pratique : algorithmes d’Euclide Nombres premiers entre eux Divisibilité Nombres premiers Problèmes algorithmiques Division euclidienne Divisibilité Propriétés : (Réflexivité) ∀n ∈ Z, n n. (Transitivité)∀a, b, c ∈ Z, si a Antisymétrie : ∀a, b ∈ Z : si a b et b c alors a b et b a, alors a = b ? Arithmétique et Cryptographie c. Arithmétique des entiers PGCD Calcul pratique : algorithmes d’Euclide Nombres premiers entre eux Divisibilité Nombres premiers Problèmes algorithmiques Division euclidienne Divisibilité Propriétés : (Réflexivité) ∀n ∈ Z, n n. (Transitivité)∀a, b, c ∈ Z, si a b et b Antisymétrie : ∀a, b ∈ Z : si a b et b c alors a c. a, alors a = b ? Arithmétique et Cryptographie Arithmétique des entiers PGCD Calcul pratique : algorithmes d’Euclide Nombres premiers entre eux Divisibilité Nombres premiers Problèmes algorithmiques Division euclidienne Divisibilité Propriétés : (Réflexivité) ∀n ∈ Z, n n. (Transitivité)∀a, b, c ∈ Z, si a b et b Antisymétrie : ∀a, b ∈ Z : si a b et b c alors a c. a, alors a = b ? (Antisymétrie, sur N) ∀a, b ∈ N : si a b et b a, alors a = b. Arithmétique et Cryptographie Arithmétique des entiers PGCD Calcul pratique : algorithmes d’Euclide Nombres premiers entre eux Divisibilité Nombres premiers Problèmes algorithmiques Division euclidienne Divisibilité Propriétés : (Réflexivité) ∀n ∈ Z, n n. (Transitivité)∀a, b, c ∈ Z, si a b et b Antisymétrie : ∀a, b ∈ Z : si a b et b c alors a c. a, alors a = b ? (Antisymétrie, sur N) ∀a, b ∈ N : si a b et b a, alors a = b. sur N, la divisibilité est un ordre Arithmétique et Cryptographie Arithmétique des entiers PGCD Calcul pratique : algorithmes d’Euclide Nombres premiers entre eux Divisibilité Nombres premiers Problèmes algorithmiques Division euclidienne Diagramme de Hasse de l’ordre de divisibilité Arithmétique et Cryptographie Arithmétique des entiers PGCD Calcul pratique : algorithmes d’Euclide Nombres premiers entre eux Divisibilité Nombres premiers Problèmes algorithmiques Division euclidienne Divisibilité Autres propriétés : 1 si x 2 a et x b, alors x au + bv pour tous u, v . L’ensemble des multiples d’un entier a est noté aZ : aZ = {au | u ∈ Z} Arithmétique et Cryptographie Arithmétique des entiers PGCD Calcul pratique : algorithmes d’Euclide Nombres premiers entre eux Divisibilité Nombres premiers Problèmes algorithmiques Division euclidienne Nombres premiers Définition 2. Un entier naturel est premier s’il admet exactement 2 diviseurs. P = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97...} Arithmétique et Cryptographie Arithmétique des entiers PGCD Calcul pratique : algorithmes d’Euclide Nombres premiers entre eux Divisibilité Nombres premiers Problèmes algorithmiques Division euclidienne Nombres premiers Propriétés : Tout entier différent de 1 admet un facteur premier. Plus précisément, tout nombre > 1 admet une unique décomposition en facteurs premiers. Exemples : 15 = 3 · 5, 16 = 24 , 17=17, 18 = 2 · 32 (Euclide) L’ensemble des nombres premiers est infini. Beaucoup de problèmes importants encore ouverts Arithmétique et Cryptographie Arithmétique des entiers PGCD Calcul pratique : algorithmes d’Euclide Nombres premiers entre eux Divisibilité Nombres premiers Problèmes algorithmiques Division euclidienne Spirale d’Ulam (Source : wikipédia) Arithmétique et Cryptographie Arithmétique des entiers PGCD Calcul pratique : algorithmes d’Euclide Nombres premiers entre eux Divisibilité Nombres premiers Problèmes algorithmiques Division euclidienne Quatre problèmes concernant P 1 Dresser la liste des premiers nombres premiers. 2 Décider si un entier n est premier. 3 Construire un grand nombre premier. 4 Déterminer un facteur d’un entier n non premier. Arithmétique et Cryptographie Arithmétique des entiers PGCD Calcul pratique : algorithmes d’Euclide Nombres premiers entre eux Divisibilité Nombres premiers Problèmes algorithmiques Division euclidienne Principe du Crible Soit p1 < p2 < p3 < . . . la liste ordonnée des nombres premiers. Pour tout i , les multiples kpi de pi avec k > 2 ne sont pas premiers. Réciproquement, si un nombre n n’est pas premier, alors en appelant pi son plus petit facteur premier, n s’écrit kpi pour un certain k > pi . Le premier entier supérieur à pi , et non multiple de p1 , p2 , . . . pi , est pi +1 . Exemple : Le premier nombre supérieur à 7 et non multiple de 2,3,5,7 est 11, qui est bien le premier suivant 7. Arithmétique et Cryptographie Arithmétique des entiers PGCD Calcul pratique : algorithmes d’Euclide Nombres premiers entre eux Divisibilité Nombres premiers Problèmes algorithmiques Division euclidienne Crible d’Ératosthène def crible(n) : "Rend une liste L verifiant L[i]=True si i premier, False sinon." L=[True]*(n+1) L[0]=False L[1]=False p=2 while p*p<=n : for m in range(p*p,n+1,p): #les multiples de p L[m]=False #sont non premiers p+=1 #recherche du nombre while not(L[p]) : p+=1 #premier suivant return L Une animation Arithmétique et Cryptographie Arithmétique des entiers PGCD Calcul pratique : algorithmes d’Euclide Nombres premiers entre eux Divisibilité Nombres premiers Problèmes algorithmiques Division euclidienne Déterminer si un entier est premier C’est le problème de la primarité (ou primalité) ; il est facile. Agrawal, Kayal et Saxena (2002) : algorithme polynomial Algorithme naı̈f : Pour tester si n est premier, tenter de diviser n √ par 2, 3, 4, 5, . . . , ⌊ n⌋. Alors n est premier ssi on n’a pas trouvé de diviseur. Complexité ? Algorithme plus efficace : l’algorithme ECPP (Elliptic Curve Primality Proving) a permis de prouver en 2004 que p = 44052638 + 26384405 (15 071 chiffres décimaux) est premier Dans ce cours : on étudiera le test de Miller-Rabin. Arithmétique et Cryptographie Arithmétique des entiers PGCD Calcul pratique : algorithmes d’Euclide Nombres premiers entre eux Divisibilité Nombres premiers Problèmes algorithmiques Division euclidienne Trouver un grand nombre premier Algorithme : 1 Choisir au hasard un entier n 2 tester si n est premier ; si non, recommencer au point précédent. Problème : combien d’essais avant de tomber sur un nombre premier ? Théorème 3. (des nombres premiers) La probabilité pour qu’un nombre n soit premier est de l’ordre de 1/ ln n, autrement dit autour de n, un nombre sur ln n est premier. Exemple pour des nombres premiers de l’ordre de 300 chiffres décimaux (utilisés pour produire une clé RSA de 2048 bits), il 300 faudra en moyenne ln 10 = 300 ln(10) ≈ 700 essais avant d’obtenir un nombre premier. Arithmétique et Cryptographie Arithmétique des entiers PGCD Calcul pratique : algorithmes d’Euclide Nombres premiers entre eux Divisibilité Nombres premiers Problèmes algorithmiques Division euclidienne Trouver un facteur d’un entier non-premier n Problème très ancien, pas d’algorithme efficace connu. Record actuel : problème RSA-250 : 2140324650240744961264423072839333563008614715144755017797754920881418023447 1401366433455190958046796109928518724709145876873962619215573630474547705208 0511905649310668769159001975940569345745223058932597669747168173806936489469 9871578494975937497937 = 6413528947707158027879019017057738908482501474294344720811685963202453234463 0238623598752668347708737661925585694639798853367 × 3337202759497815655622601060535511422794076034476755466678452098702384172921 0037080257448673296881877565718986258036932062711 Factorisation trouvée essentiellement par une équipe du INRIA de Nancy en février 2020. 2700 année-cœur RSA Challenge Arithmétique et Cryptographie Arithmétique des entiers PGCD Calcul pratique : algorithmes d’Euclide Nombres premiers entre eux Divisibilité Nombres premiers Problèmes algorithmiques Division euclidienne Division euclidienne Théorème 4. Soit a ∈ Z et b ∈ N∗ . Il existe un unique couple (q, r ) tel que a = b · q + r et 0 6 r < b. L’écriture a = b · q + r est la division euclidienne de a par b ; q est le quotient et r est le reste. Exemple. 25 = 3 × 7 + 4 est la division euclidienne de 25 par 7, mais pas de 25 par 3. (division de n par n ou par 1) : n = n × 1 + 0 −2 par 5 : −2 = 5 × (−1) + 3 Reste : noté a mod b ou a%b. b divise a ssi a%b = 0. Arithmétique et Cryptographie Arithmétique des entiers PGCD Calcul pratique : algorithmes d’Euclide Nombres premiers entre eux Divisibilité Nombres premiers Problèmes algorithmiques Division euclidienne Démonstration Démonstration Unicité : si a = bq1 + r1 = bq2 + r2 , alors b(q1 − q2 ) = r2 − r1 , r2 − r1 q1 − q2 = , b or r1 , r2 ∈ [0, b[ donc r2 − r1 ∈] − b; b[, r2 − r1 donc q1 − q2 = ∈] − 1; 1[, or q1 − q2 ∈ Z, b donc q1 − q2 = 0, donc q1 = q2 , puis r1 = r2 . Existence : cf TD 1 Arithmétique et Cryptographie Arithmétique des entiers PGCD Calcul pratique : algorithmes d’Euclide Nombres premiers entre eux Introduction Définition Plan 1 Arithmétique des entiers 2 PGCD Introduction Définition 3 Calcul pratique : algorithmes d’Euclide 4 Nombres premiers entre eux Arithmétique et Cryptographie Arithmétique des entiers PGCD Calcul pratique : algorithmes d’Euclide Nombres premiers entre eux Introduction Définition PGCD : introduction On considère les entiers de la forme 10u + 16v où u et v parcourent Z. Notation : {10u + 16v | u, v ∈ Z} = 10Z + 16Z. Arithmétique et Cryptographie Arithmétique des entiers PGCD Calcul pratique : algorithmes d’Euclide Nombres premiers entre eux Introduction Définition 16Z + 10Z 7 6 5 4 3 2 1 0 -1 -2 -3 -4 -5 -6 -7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 52 36 20 4 -12 -28 -44 -60 -76 -92 -108 -124 -140 -156 -172 62 46 30 14 -2 -18 -34 -50 -66 -82 -98 -114 -130 -146 -162 72 56 40 24 8 -8 -24 -40 -56 -72 -88 -104 -120 -136 -152 82 66 50 34 18 2 -14 -30 -46 -62 -78 -94 -110 -126 -142 92 76 60 44 28 12 -4 -20 -36 -52 -68 -84 -100 -116 -132 102 86 70 54 38 22 6 -10 -26 -42 -58 -74 -90 -106 -122 112 96 80 64 48 32 16 0 -16 -32 -48 -64 -80 -96 -112 122 106 90 74 58 42 26 10 -6 -22 -38 -54 -70 -86 -102 132 116 100 84 68 52 36 20 4 -12 -28 -44 -60 -76 -92 142 126 110 94 78 62 46 30 14 -2 -18 -34 -50 -66 -82 152 136 120 104 88 72 56 40 24 8 -8 -24 -40 -56 -72 Arithmétique et Cryptographie Arithmétique des entiers PGCD Calcul pratique : algorithmes d’Euclide Nombres premiers entre eux Introduction Définition 16Z + 10Z Liste des éléments du tableau : . . . , −6, −4, −2, 0, 2, 4, 6, 8, . . .. Il semble que 16Z + 10Z = 2Z. Arithmétique et Cryptographie Arithmétique des entiers PGCD Calcul pratique : algorithmes d’Euclide Nombres premiers entre eux Introduction Définition 18Z + 33Z 7 6 5 4 3 2 1 0 -1 -2 -3 -4 -5 -6 -7 -5 -4 -3 -2 -1 0 1 2 3 -39 -57 -75 -93 -111 -129 -147 -165 -183 -201 -219 -237 -255 -273 -291 -6 -24 -42 -60 -78 -96 -114 -132 -150 -168 -186 -204 -222 -240 -258 27 9 -9 -27 -45 -63 -81 -99 -117 -135 -153 -171 -189 -207 -225 60 42 24 6 -12 -30 -48 -66 -84 -102 -120 -138 -156 -174 -192 93 75 57 39 21 3 -15 -33 -51 -69 -87 -105 -123 -141 -159 126 108 90 72 54 36 18 0 -18 -36 -54 -72 -90 -108 -126 159 141 123 105 87 69 51 33 15 -3 -21 -39 -57 -75 -93 192 174 156 138 120 102 84 66 48 30 12 -6 -24 -42 -60 225 207 189 171 153 135 117 99 81 63 45 27 9 -9 -27 Arithmétique et Cryptographie Arithmétique des entiers PGCD Calcul pratique : algorithmes d’Euclide Nombres premiers entre eux Introduction Définition 18Z + 33Z Liste des éléments du tableau : . . . , −9, −6, −3, 0, 3, 6, 9, 12, . . .. Il semble que 18Z + 33Z = 3Z. Arithmétique et Cryptographie Arithmétique des entiers PGCD Calcul pratique : algorithmes d’Euclide Nombres premiers entre eux Introduction Définition Théorème 5. Soient a, b ∈ Z. Il existe un unique c ∈ N tel que aZ + bZ = cZ. Démonstration Unicité : facile. Existence : Si a = b = 0, on prend c = 0. Sinon : posons c = min((aZ + bZ) ∩ N∗ ). On a donc c > 0 et c = au0 + bv0 pour un certain couple (u0 , v0 ) ∈ Z2 . Arithmétique et Cryptographie Arithmétique des entiers PGCD Calcul pratique : algorithmes d’Euclide Nombres premiers entre eux Introduction Définition cZ ⊂ aZ + bZ : en effet, kc = k(au0 + bv0 ) = a(ku0 ) + b(kv0 ) ∈ aZ + bZ pour tout k. aZ + bZ ⊂ cZ : soit au + bv quelconque dans aZ + bZ, on divise au + bv par c = au0 + bv0 : au + bv = qc + r = q(au0 + bv0 ) + r avec 0 6 r < c. Donc r = a(u − qu0 ) + b(v − qv0 ) ∈ aZ + bZ. si r 6= 0, alors r ∈ (aZ + bZ) ∩ N∗ et r < c, ce qui contredit la minimalité de c. Donc r = 0 et au + bv = cq ∈ cZ. Arithmétique et Cryptographie Arithmétique des entiers PGCD Calcul pratique : algorithmes d’Euclide Nombres premiers entre eux Introduction Définition Définition du PGCD Définition 6. Soient a, b ∈ Z, l’entier c ∈ N tel que aZ + bZ = cZ est le pgcd de a et b, noté pgcd(a, b) Propriété 7. pgcd(a, b) est le plus grand (au sens de la divisibilité) diviseur commun de a et b ; autrement dit, c’est un diviseur commun, et tout diviseur commun de a et b divise pgcd(a, b). Démonstration a ∈ aZ + bZ = cZ, donc a multiple de c. Idem pour b. si d divise a et b, il divise tous les au + bv , donc en particulier il divise au0 + bv0 = c. Arithmétique et Cryptographie Arithmétique des entiers PGCD Calcul pratique : algorithmes d’Euclide Nombres premiers entre eux Introduction Définition Théorème 8. (Bachet-Bézout, ou identité de Bézout) Soit a et b deux entiers, il existe x et y tels que ax + by = pgcd(a, b). Démonstration : conséquence directe de la définition. Arithmétique et Cryptographie Arithmétique des entiers PGCD Calcul pratique : algorithmes d’Euclide Nombres premiers entre eux Introduction Définition Illustration du théorème de Bachet-Bézout Arithmétique et Cryptographie Arithmétique des entiers PGCD Calcul pratique : algorithmes d’Euclide Nombres premiers entre eux Introduction Définition 16Z + 10Z 16 12 20 28 30 8 4 6 10 ... 14 ... 2 1 Diviseurs communs de 16 et 10 Arithmétique et Cryptographie Arithmétique des entiers PGCD Calcul pratique : algorithmes d’Euclide Nombres premiers entre eux Introduction Définition Petits exercices sur le pgcd On a : 640 × 753 − 1492 × 323 = 4, qu’en déduit-on sur le pgcd de 753 et 323 ? On a 17 × 5 − 12 × 7 = 1, qu’en déduit-on sur le pgcd de 17 et 12 ? L’équation 18x + 39y = 5 admet-elle des solutions ? Arithmétique et Cryptographie Arithmétique des entiers PGCD Calcul pratique : algorithmes d’Euclide Nombres premiers entre eux Introduction Définition Petits exercices sur le pgcd On a : 640 × 753 − 1492 × 323 = 4, qu’en déduit-on sur le pgcd de 753 et 323 ? On en déduit que pgcd(753,323) divise 4 : c’est donc 1,2 ou 4. On a 17 × 5 − 12 × 7 = 1, qu’en déduit-on sur le pgcd de 17 et 12 ? L’équation 18x + 39y = 5 admet-elle des solutions ? Arithmétique et Cryptographie Arithmétique des entiers PGCD Calcul pratique : algorithmes d’Euclide Nombres premiers entre eux Introduction Définition Petits exercices sur le pgcd On a : 640 × 753 − 1492 × 323 = 4, qu’en déduit-on sur le pgcd de 753 et 323 ? On en déduit que pgcd(753,323) divise 4 : c’est donc 1,2 ou 4. On a 17 × 5 − 12 × 7 = 1, qu’en déduit-on sur le pgcd de 17 et 12 ? On en déduit que pgcd(17,12) divise 1, donc il vaut 1. On dit que 17 et 12 sont premiers entre eux. L’équation 18x + 39y = 5 admet-elle des solutions ? Arithmétique et Cryptographie Arithmétique des entiers PGCD Calcul pratique : algorithmes d’Euclide Nombres premiers entre eux Introduction Définition Petits exercices sur le pgcd On a : 640 × 753 − 1492 × 323 = 4, qu’en déduit-on sur le pgcd de 753 et 323 ? On en déduit que pgcd(753,323) divise 4 : c’est donc 1,2 ou 4. On a 17 × 5 − 12 × 7 = 1, qu’en déduit-on sur le pgcd de 17 et 12 ? On en déduit que pgcd(17,12) divise 1, donc il vaut 1. On dit que 17 et 12 sont premiers entre eux. L’équation 18x + 39y = 5 admet-elle des solutions ? pgcd(18, 39) = 3, donc pour tout x, y on a 3 18x + 39y , donc 18x + 39y 6= 5. Arithmétique et Cryptographie Arithmétique des entiers PGCD Calcul pratique : algorithmes d’Euclide Nombres premiers entre eux Introduction Définition Petits exercices sur le pgcd Soit k ∈ N. Que vaut pgcd(ka, kb) en fonction de pgcd(a, b) ? Arithmétique et Cryptographie Arithmétique des entiers PGCD Calcul pratique : algorithmes d’Euclide Nombres premiers entre eux Introduction Définition Petits exercices sur le pgcd Soit k ∈ N. Que vaut pgcd(ka, kb) en fonction de pgcd(a, b) ? On montre que k pgcd(a, b) est un diviseur commun de ka, kb et qu’il s’écrit sous la forme kau + kbv . Arithmétique et Cryptographie Arithmétique des entiers PGCD Calcul pratique : algorithmes d’Euclide Nombres premiers entre eux Introduction Définition Petits exercices sur le pgcd Soit k ∈ N. Que vaut pgcd(ka, kb) en fonction de pgcd(a, b) ? On montre que k pgcd(a, b) est un diviseur commun de ka, kb et qu’il s’écrit sous la forme kau + kbv . pgcd(a, b) a, donc k pgcd(a, b) ka ; symétriquement k pgcd(a, b) divise kb. Donc k pgcd(a, b) est un diviseur commun de ka et kb, donc k pgcd(a, b) pgcd(ka, kb). ∃u, v tels que pgcd(a, b) = au + bv , donc k pgcd(a, b) = kau + kbv , or pgcd(ka, kb) kau + kbv , donc pgcd(ka, kb) k pgcd(a, b). Arithmétique et Cryptographie Arithmétique des entiers PGCD Calcul pratique : algorithmes d’Euclide Nombres premiers entre eux Algorithme d’Euclide simple Algorithme d’Euclide étendu Plan 1 Arithmétique des entiers 2 PGCD 3 Calcul pratique : algorithmes d’Euclide Algorithme d’Euclide simple Algorithme d’Euclide étendu 4 Nombres premiers entre eux Arithmétique et Cryptographie Arithmétique des entiers PGCD Calcul pratique : algorithmes d’Euclide Nombres premiers entre eux Algorithme d’Euclide simple Algorithme d’Euclide étendu Trois propriétés pgcd(a, b) = pgcd(b, a) pgcd(a, 0) = a Lemme 9. (Euclide) Pour tous a, b, p ∈ Z, pgcd(a, b) = pgcd(a + bp, b) Démonstration : (a, b) et (a + bp, b) ont les mêmes diviseurs communs, donc ils ont le même plus grand diviseur commun. Arithmétique et Cryptographie Arithmétique des entiers PGCD Calcul pratique : algorithmes d’Euclide Nombres premiers entre eux Algorithme d’Euclide simple Algorithme d’Euclide étendu Algorithme d’Euclide def pgcd(a,b): #calcul iteratif du pgcd de a et b while b != 0 : a , b = b, a % b return a def pgcd(a,b): #calcul recursif du pgcd de a et b if b==0 : return a return pgcd(b,a%b) Arithmétique et Cryptographie Arithmétique des entiers PGCD Calcul pratique : algorithmes d’Euclide Nombres premiers entre eux Algorithme d’Euclide simple Algorithme d’Euclide étendu Pgcd de 1154 et 816 1154 = 816 × 1 + 338 816 = 338 × 2 + 140 338 = 140 × 2 + 58 140 = 58 × 2 + 24 58 = 24 × 2 + 10 24 = 10 × 2 + 4 10 = 4 × 2 + 2 4 =2×2+0 Arithmétique et Cryptographie Arithmétique des entiers PGCD Calcul pratique : algorithmes d’Euclide Nombres premiers entre eux Algorithme d’Euclide simple Algorithme d’Euclide étendu Euclide étendu : illustration Problème : trouver les coordonnées du pgcd(a, b) dans le tableau des au + bv , c’est-à-dire déterminer u, v tels que au + bv = pgcd(a, b). 7 6 5 4 3 2 1 0 -1 -2 -3 -4 -5 -6 -5 -4 -3 -2 -1 0 1 2 3 4 -26 -36 -46 -56 -66 -76 -86 -96 -106 -116 -126 -136 -146 -10 -20 -30 -40 -50 -60 -70 -80 -90 -100 -110 -120 -130 6 -4 -14 -24 -34 -44 -54 -64 -74 -84 -94 -104 -114 22 12 2 -8 -18 -28 -38 -48 -58 -68 -78 -88 -98 38 28 18 8 -2 -12 -22 -32 -42 -52 -62 -72 -82 54 44 34 24 14 4 -6 -16 -26 -36 -46 -56 -66 70 60 50 40 30 20 10 0 -10 -20 -30 -40 -50 86 76 66 56 46 36 26 16 6 -4 -14 -24 -34 102 92 82 72 62 52 42 32 22 12 2 -8 -18 118 108 98 88 78 68 58 48 38 28 18 8 -2 134 124 114 104 94 84 74 64 54 44 34 24 14 Arithmétique et Cryptographie Arithmétique des entiers PGCD Calcul pratique : algorithmes d’Euclide Nombres premiers entre eux Algorithme d’Euclide simple Algorithme d’Euclide étendu Un morphisme On pose ϕ : coordonnées (u, v ) − 7 → contenu de la cellule (u, v ), i.e. Z2 −→ Z ϕ: (u, v ) 7−→ au + bv Arithmétique et Cryptographie Arithmétique des entiers PGCD Calcul pratique : algorithmes d’Euclide Nombres premiers entre eux Algorithme d’Euclide simple Algorithme d’Euclide étendu Un morphisme On pose ϕ : coordonnées (u, v ) − 7 → contenu de la cellule (u, v ), i.e. Z2 −→ Z ϕ: (u, v ) 7−→ au + bv ϕ est un morphisme : ϕ((u, v ) + (u ′ , v ′ )) = ϕ(u, v ) + ϕ(u ′ , v ′ ) ϕ(λ(u, v )) = λϕ(u, v ) Ce qu’on peut résumer : ϕ(α(u, v ) + β(u ′ , v ′ )) = αϕ(u, v ) + βϕ(u ′ , v ′ ) Arithmétique et Cryptographie Arithmétique des entiers PGCD Calcul pratique : algorithmes d’Euclide Nombres premiers entre eux Algorithme d’Euclide simple Algorithme d’Euclide étendu Un morphisme On pose ϕ : coordonnées (u, v ) − 7 → contenu de la cellule (u, v ), i.e. Z2 −→ Z ϕ: (u, v ) 7−→ au + bv ϕ est un morphisme : ϕ((u, v ) + (u ′ , v ′ )) = ϕ(u, v ) + ϕ(u ′ , v ′ ) ϕ(λ(u, v )) = λϕ(u, v ) Ce qu’on peut résumer : ϕ(α(u, v ) + β(u ′ , v ′ )) = αϕ(u, v ) + βϕ(u ′ , v ′ ) Les opérations effectuées sur le contenu des cases du tableau se transposent aux coordonnées de ces cases. Arithmétique et Cryptographie Arithmétique des entiers PGCD Calcul pratique : algorithmes d’Euclide Nombres premiers entre eux Algorithme d’Euclide simple Algorithme d’Euclide étendu Euclide étendu : illustration Division q r u v 16 1 0 10 0 1 10 0 16 ϕ(1, 0) = 16 et ϕ(0, 1) = 10 Arithmétique et Cryptographie Arithmétique des entiers PGCD Calcul pratique : algorithmes d’Euclide Nombres premiers entre eux Algorithme d’Euclide simple Algorithme d’Euclide étendu Euclide étendu : illustration Division q r u v 16 1 0 10 0 1 16=10x1+6 1 6 10 0 16 Division euclidienne de 16 par 10 Arithmétique et Cryptographie Arithmétique des entiers PGCD Calcul pratique : algorithmes d’Euclide Nombres premiers entre eux Algorithme d’Euclide simple Algorithme d’Euclide étendu Euclide étendu : illustration Division q r 16 10 16=10x1+6 1 6 u 1 0 1 v 0 1 -1 10 0 16 6 On a 6 = 16 − 1 × 10 = ϕ(1, 0) − 1ϕ(0, 1) = ϕ((1, 0) − 1(0, 1)) = ϕ(1, −1) Arithmétique et Cryptographie Arithmétique des entiers PGCD Calcul pratique : algorithmes d’Euclide Nombres premiers entre eux Algorithme d’Euclide simple Algorithme d’Euclide étendu Euclide étendu : illustration Division q r 16 10 16=10x1+6 1 6 u 1 0 1 v 0 1 -1 10 0 6 On recommence avec 10 et 6... Arithmétique et Cryptographie Arithmétique des entiers PGCD Calcul pratique : algorithmes d’Euclide Nombres premiers entre eux Algorithme d’Euclide simple Algorithme d’Euclide étendu Euclide étendu : illustration Division q r 16 10 16=10x1+6 1 6 10=6x1+4 1 4 u 1 0 1 v 0 1 -1 10 0 6 On recommence avec 10 et 6... Arithmétique et Cryptographie Arithmétique des entiers PGCD Calcul pratique : algorithmes d’Euclide Nombres premiers entre eux Algorithme d’Euclide simple Algorithme d’Euclide étendu Euclide étendu : illustration Division q r u v 16 1 0 10 0 1 16=10x1+6 1 6 1 -1 10=6x1+4 1 4 -1 2 4 10 0 6 On recommence avec 10 et 6... Arithmétique et Cryptographie Arithmétique des entiers PGCD Calcul pratique : algorithmes d’Euclide Nombres premiers entre eux Algorithme d’Euclide simple Algorithme d’Euclide étendu Euclide étendu : illustration Division q r u v 16 1 0 10 0 1 16=10x1+6 1 6 1 -1 10=6x1+4 1 4 -1 2 4 0 6 Puis avec avec 6 et 4... Arithmétique et Cryptographie Arithmétique des entiers PGCD Calcul pratique : algorithmes d’Euclide Nombres premiers entre eux Algorithme d’Euclide simple Algorithme d’Euclide étendu Euclide étendu : illustration Division q r u v 16 1 0 10 0 1 16=10x1+6 1 6 1 -1 10=6x1+4 1 4 -1 2 6=4x1+2 1 2 4 0 6 Puis avec avec 6 et 4... Arithmétique et Cryptographie Arithmétique des entiers PGCD Calcul pratique : algorithmes d’Euclide Nombres premiers entre eux Algorithme d’Euclide simple Algorithme d’Euclide étendu Euclide étendu : illustration Division q r u v 16 1 0 10 0 1 16=10x1+6 1 6 1 -1 10=6x1+4 1 4 -1 2 6=4x1+2 1 2 2 -3 4 0 6 2 Puis avec avec 6 et 4... Arithmétique et Cryptographie Arithmétique des entiers PGCD Calcul pratique : algorithmes d’Euclide Nombres premiers entre eux Algorithme d’Euclide simple Algorithme d’Euclide étendu Euclide étendu : illustration Division q r u v 16 1 0 10 0 1 16=10x1+6 1 6 1 -1 10=6x1+4 1 4 -1 2 6=4x1+2 1 2 2 -3 4 0 2 Puis avec avec 4 et 2... Arithmétique et Cryptographie Arithmétique des entiers PGCD Calcul pratique : algorithmes d’Euclide Nombres premiers entre eux Algorithme d’Euclide simple Algorithme d’Euclide étendu Euclide étendu : illustration Division q r u v 16 1 0 10 0 1 16=10x1+6 1 6 1 -1 10=6x1+4 1 4 -1 2 6=4x1+2 1 2 2 -3 4=2x2+0 2 0 4 0 2 Puis avec avec 4 et 2... Arithmétique et Cryptographie Arithmétique des entiers PGCD Calcul pratique : algorithmes d’Euclide Nombres premiers entre eux Algorithme d’Euclide simple Algorithme d’Euclide étendu Euclide étendu : illustration 0 Division q r u v 16 1 0 10 0 1 16=10x1+6 1 6 1 -1 10=6x1+4 1 4 -1 2 6=4x1+2 1 2 2 -3 4=2x2+0 2 0 -5 8 4 0 2 On a obtenu 0 : l’algorithme se termine, on a ϕ(2, −3) = 2, donc 2 = 16 × 2 + 10 × (−3) Arithmétique et Cryptographie Arithmétique des entiers PGCD Calcul pratique : algorithmes d’Euclide Nombres premiers entre eux Algorithme d’Euclide simple Algorithme d’Euclide étendu Algorithme d’Euclide étendu def euclide_etendu(a,b): "rend r,u,v avec r=pgcd(a,b) et au+bv=r" r0, u0, v0 = a, 1, 0 r1, u1, v1 = b, 0, 1 while r1!=0 : q=r0//r1 r0, r1 = r1, r0-q*r1 u0, u1 = u1, u0-q*u1 v0, v1 = v1, v0-q*v1 return r0,u0,v0 Arithmétique et Cryptographie Arithmétique des entiers PGCD Calcul pratique : algorithmes d’Euclide Nombres premiers entre eux Algorithme d’Euclide simple Algorithme d’Euclide étendu disposition pratique Pour trouver une solution à 21u + 8v = 1 : n division euclidienne q rn 0 21 8 1 2 21 = 2 × 8 + 5 2 5 8 =1×5+3 1 3 3 4 5 =1×3+2 1 2 5 3 =1×2+1 1 1 2 =2×1+0 6 On obtient 21 · (−3) + 8 × 8 = 1. un 1 0 1 −1 2 −3 vn 0 1 −2 3 −5 8 Arithmétique et Cryptographie Arithmétique des entiers PGCD Calcul pratique : algorithmes d’Euclide Nombres premiers entre eux Algorithme d’Euclide simple Algorithme d’Euclide étendu Exercice Déterminer (u, v ) tel que 17u + 13v = 1, puis (u, v ) tel que 17u + 13v = 3. Arithmétique et Cryptographie Arithmétique des entiers PGCD Calcul pratique : algorithmes d’Euclide Nombres premiers entre eux Algorithme d’Euclide simple Algorithme d’Euclide étendu Exercice Déterminer (u, v ) tel que 17u + 13v = 1, puis (u, v ) tel que 17u + 13v = 3. Arithmétique et Cryptographie Arithmétique des entiers PGCD Calcul pratique : algorithmes d’Euclide Nombres premiers entre eux Plan 1 Arithmétique des entiers 2 PGCD 3 Calcul pratique : algorithmes d’Euclide 4 Nombres premiers entre eux Arithmétique et Cryptographie Arithmétique des entiers PGCD Calcul pratique : algorithmes d’Euclide Nombres premiers entre eux Nombres premiers entre eux Définition : a, b premiers entre eux lorsque pgcd(a, b) = 1. Exemples : 3 et 10 sont premiers entre eux ; 12 et 14 ne le sont pas. Si n est premier alors ∀a, a est premier avec n ou a est un multiple de n. Arithmétique et Cryptographie Arithmétique des entiers PGCD Calcul pratique : algorithmes d’Euclide Nombres premiers entre eux Nombres premiers entre eux Définition : a, b premiers entre eux lorsque pgcd(a, b) = 1. Exemples : 3 et 10 sont premiers entre eux ; 12 et 14 ne le sont pas. Si n est premier alors ∀a, a est premier avec n ou a est un multiple de n. Théorème de Bézout : a et b premiers entre eux ssi ∃u, v tels que au + bv = 1. Arithmétique et Cryptographie Arithmétique des entiers PGCD Calcul pratique : algorithmes d’Euclide Nombres premiers entre eux Nombres premiers entre eux Des caractérisations : a, b sont premiers entre eux ssi : aZ + bZ = Z Pour tout k, l’équation au + bv = k admet des solutions (u, v ). a La fraction est irréductible. b a et b n’ont pas de facteur commun, à part 1. a et b n’ont pas de facteur premier commun. le ppcm de a et b est ab. Arithmétique et Cryptographie Arithmétique des entiers PGCD Calcul pratique : algorithmes d’Euclide Nombres premiers entre eux Nombres premiers entre eux Théorème (Gauss) : si a et b premiers entre eux et a a c. Arithmétique et Cryptographie bc, alors Arithmétique des entiers PGCD Calcul pratique : algorithmes d’Euclide Nombres premiers entre eux Nombres premiers entre eux Théorème (Gauss) : si a et b premiers entre eux et a a c. bc, alors Démonstration. a et b sont premiers entre eux, donc il existe u et v tels que au + bv = 1. En multipliant par c : auc + bvc = c, or a divise auc et a divise bvc car il divise bc. Donc a divise c. Arithmétique et Cryptographie Arithmétique des entiers PGCD Calcul pratique : algorithmes d’Euclide Nombres premiers entre eux Nombres premiers entre eux Théorème : a est premier avec b et c ssi il est premier avec bc. Arithmétique et Cryptographie Arithmétique des entiers PGCD Calcul pratique : algorithmes d’Euclide Nombres premiers entre eux Nombres premiers entre eux Théorème : a est premier avec b et c ssi il est premier avec bc. Démonstration. Sens =⇒ : par Bézout, il existe u, v , u ′ , v ′ tels que au + bv = 1 et au ′ + cv ′ = 1. Arithmétique et Cryptographie Arithmétique des entiers PGCD Calcul pratique : algorithmes d’Euclide Nombres premiers entre eux Nombres premiers entre eux Théorème : a est premier avec b et c ssi il est premier avec bc. Démonstration. Sens =⇒ : par Bézout, il existe u, v , u ′ , v ′ tels que au + bv = 1 et au ′ + cv ′ = 1. On multiplie ces deux égalités : aauu ′ + aucv ′ + au ′ bv + bcvv ′ = 1 × 1 = 1 donc a(auu ′ + ucv ′ + u ′ bv ) + bc(vv ′ ) = 1, donc a et bc premiers entre eux. Arithmétique et Cryptographie Arithmétique des entiers PGCD Calcul pratique : algorithmes d’Euclide Nombres premiers entre eux Nombres premiers entre eux Théorème : a est premier avec b et c ssi il est premier avec bc. Démonstration. Sens =⇒ : par Bézout, il existe u, v , u ′ , v ′ tels que au + bv = 1 et au ′ + cv ′ = 1. On multiplie ces deux égalités : aauu ′ + aucv ′ + au ′ bv + bcvv ′ = 1 × 1 = 1 donc a(auu ′ + ucv ′ + u ′ bv ) + bc(vv ′ ) = 1, donc a et bc premiers entre eux. Sens ⇐= : par Bézout, il existe u, v tel que au + bcv = 1, autrement dit au + b(cv ) = 1, donc a et b premiers entre eux, et au + c(bv ) = 1, donc a et c premiers entre eux. Arithmétique et Cryptographie Arithmétique des entiers PGCD Calcul pratique : algorithmes d’Euclide Nombres premiers entre eux Des entiers premiers entre eux La case (i , j) est noire ssi i et j premiers entre eux. 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 Arithmétique et Cryptographie Arithmétique des entiers PGCD Calcul pratique : algorithmes d’Euclide Nombres premiers entre eux Des entiers premiers entre eux Arithmétique et Cryptographie Arithmétique des entiers PGCD Calcul pratique : algorithmes d’Euclide Nombres premiers entre eux Des entiers premiers entre eux Des arbres plantés au centre de chaque case, l’observateur au centre de la case (0,0) Arithmétique et Cryptographie Arithmétique des entiers PGCD Calcul pratique : algorithmes d’Euclide Nombres premiers entre eux Des entiers premiers entre eux Quels arbres voit l’observateur ? Arithmétique et Cryptographie Arithmétique des entiers PGCD Calcul pratique : algorithmes d’Euclide Nombres premiers entre eux Des entiers premiers entre eux Quels arbres voit l’observateur ? Arithmétique et Cryptographie Arithmétique des entiers PGCD Calcul pratique : algorithmes d’Euclide Nombres premiers entre eux Des entiers premiers entre eux Quels arbres voit l’observateur ? Arithmétique et Cryptographie Arithmétique des entiers PGCD Calcul pratique : algorithmes d’Euclide Nombres premiers entre eux Exercices 1 2 3 Déterminer le pgcd de 17 × 193 × 23 et 13 × 192 × 234 . Montrer que si a et b sont premiers entre eux, alors a2 et b 2 le sont aussi. Montrer que réciproquement, si a2 et b 2 sont premiers entre eux, alors a et b le sont aussi. Arithmétique et Cryptographie