• Aucun résultat trouvé

Méthode de la poêle à frire

Dans le document MATHÉMATIQUES ET TI-Nspire (Page 145-158)

Annexe : les nombres hautement composés

Étape 1 : on décompose 1063 en base 2, en procédant à des divisions successives par 2

2. La méthode de Fermat

3.2 Méthode de la poêle à frire

 … encore appelée méthode  de Pollard… le même mathématicien que précédemment…

Tout commence par une belle idée, si belle qu’on la dirait sortie d’un livre de philosophie :

« Tout processus fini est ultimement périodique ».

Mettons de côté, au moins pour aujourd’hui, les implications philosophiques de cette maxime : contentons-nous de faire de l’arithmétique… et de la cuisine en quelque sorte, s’il faut en croire le titre de la méthode…

Il nous faut donc d’abord un processus : par exemple l’application définie par f(x) = x2 Ŕ 1.

Pour que ce processus soit fini, nous nous placerons dans les congruences modulo 17 : plus

On voit apparaitre une période 8, 12, 7, 14. Le petit dessin ci-dessous explique pourquoi on parle ici de poêle à frire.

x1 x2 x2 x4 x3 x6

mais x4 = x8.

La poêle dans la main…

Commençons d’abord par observer ce qui se passe dans un cas où la factorisation est connue, avec par exemple N = 1 133 = 11 × 103.

Nous aurons besoin de deux « poêles à frire », une première pour le nombre N = 1 133 dans /1133, et une autre pour le facteur p = 11 dans /11, donc deux suites (xn) et (yn). Nous choisirons 2 comme valeur initiale pour chacune de ces deux suites.

Mais nous travaillerons cette fois avec f(x) = x2 + 1, calculé dans la colonne de gauche modulo 1133 (suite (xn)) et dans la colonne de droite modulo 11 (suite (yn)).

Laissons mijoter à feu doux dans une feuille de calcul et regardons ce que l’on obtient…

La poêle de gauche est grande :

un « manche » de longueur 3 (les entiers 2, 5 et 26, en bleu dans le tableau),

une période de longueur 14 (677, 598, 710, 1049, 259, 235, 842, 840, 875, 851, 215, 906, 545, 180 en jaune dans le tableau),

l’épacte vaut 14.

La poêle de droite est un modèle beaucoup plus petit :

Supposons la propriété vraie pour un entier arbitraire n. On peut alors écrire :

mod11

N’oublions pas non plus que pour un nombre que l’on cherche à factoriser, la colonne de droite n’est pas accessible... tandis que celle donnant xn, elle, est tout à fait disponible.

Intéressons-nous à ce qui se passe autour de l’épacte e = 2 de la deuxième suite (voir le cadre dans la feuille de calcul précédente). On peut le vérifier dans notre exemple car 11 divise bien 598 Ŕ 26 = 572...

L’information est d’importance ! Le facteur p = 11, celui qu’a priori on ne connaît pas, apparaît discrètement dans la poêle de gauche ! Certes pas directement visible : 11 se contente de diviser x2e Ŕ xe. Un peu comme s’il était un ingrédient, une pincée de sel, dans la sauce du petit plat que l’on mijote… Mais comment peut-on isoler ce diviseur, à supposer qu’on ne le connaisse pas, s’il n’est pas directement visible ? Comme p = 11 divise x2e Ŕ xe et N, il divise aussi le pgcd de x2e Ŕ xe et de N qui à ce moment est strictement supérieur à 1.

Le discours que l’on tient dans ce cas particulier se généralise à un entier N quelconque et à un de ses diviseurs p, que l’on cherche à déterminer. Il est prudent, avant de lancer tout calcul, de s’assurer à l’aide du théorème de Fermat que l’entier que l’entier N est bien composé.

L’étude précédente montre qu’il suffit de travailler avec x2k Ŕ xk, en commençant à k = 1. Comme on ne sait rien du moment où l’on sera à l’épacte de la deuxième suite, on teste à chaque étape si le pgcd de x2k Ŕ xk et de N est supérieur à 1 (…l’algorithme d’Euclide est très performant….). Si oui, ce pgcd lui-même est aussi un diviseur de N et nous avons un facteur de N17 ; sinon on passe à la valeur suivante de k. L’algorithme s’arrêtera donc forcément au moment de l’épacte de la deuxième suite.

17 Qui peut malheureusement être égal à n lui-même. Dans ce cas, la factorisation n’est pas intéressante…

Le pgcd de x6 Ŕ x3 et de 14 453 vaut alors 97, et celui de x28 Ŕ x14 et de 14 453 est 149 : la factorisation est complète car 14 453 = 149 × 97.

Quelques remarques avant de passer à l’écriture sur la TI-Nspire de cet algorithme :

sur le choix de la fonction f : pas forcément f x

 

x21 comme les exemples que nous avons vus. N’importe quel autre polynôme peut convenir, à l’exception des polynômes de degré 1 qui conduisent à des épactes souvent importantes18. Les polynômes de degré deux réalisent un bon compromis entre une épacte assez petite et des calculs modérés.

le choix du premier terme : de la même façon, on pourrait choisir un autre premier terme que 2. Il faut cependant éviter 0 ou Ŕ2 qui peuvent conduire à des épactes trop longues.

Écriture d’une fonction

Le plus simple, c’est de définir la fonction f dans l’application Calculs. Il faudra penser à la définir, ou à la modifier, si nécessaire. On peut aussi mettre comme paramètre d’entrée le nombre n à factoriser et le premier terme de la suite (même si l’on prend souvent 2). Le code est alors le suivant :

En conservant les notations de notre exemple, on ne gère que l’évolution de la suite (xn) : la suite (yn) est en effet inaccessible dans la mesure où on ne connaît pas de factorisation de notre entier. À chaque fois que l’on avance d’une étape pour x1, on avance deux fois plus vite pour x2, d’où la double instruction pour cette dernière variable.

On sait qu’au moment de l’épacte de la deuxième suite (yn) Ŕ inconnue au demeurant Ŕ, le pgcd de x2 et de x1 est supérieur à 1 : comme on ignore le moment où survient cette épacte, on teste le pgcd à chaque passage dans la boucle19.

Les résultats sont satisfaisants comme le montre l’écran de calculatrice suivant. Ils sont obtenus en des temps très courts…

Quelques remarques sur cet algorithme

Cet algorithme renvoie-t-il toujours un diviseur strict de N ? Tout ce que l’on sait, c’est qu’il renvoie un diviseur de N strictement plus grand que 1… mais il arrive parfois, si l’on n’a pas trop de chance, que ce pgcd soit égal ... à N lui-même, ce qui ne règle en rien le problème de la factorisation de N…

Ainsi par exemple, avec N = 1 591 et f(x) = x2 Ŕ 1 :

Mais le problème est réglé avec f(x) = x2 + 1.

19 Heureusement que l’algorithme d’Euclide est très performant…

Au moment de l’épacte, on saura que x2exe est à la fois divisible par 37 et 43 donc par 1 591 ! C’est pourquoi le pgcd renvoyé est précisément 1 591.

Il n’y a pas de remède, sauf à changer la fonction utilisée : ici, avec f(x) = x2 + 1, il n’y a plus de problème.

Cet algorithme demande-t-il beaucoup de temps ? En fait non, car il se trouve que l’épacte de la deuxième suite apparaît assez rapidement. Des calculs ont été faits sur ordinateur qui prouvent que, pour tout nombre premier p inférieur à 106, l’épacte de la suite (xn) définie par :

Plus précisément, on conjecture que cette épacte est, pour tout nombre premier p, inférieure ou égale à 43 p log p : personne ne l’a cependant encore prouvé, ne sachant pas par quel bout prendre le manche de la poêle...

L’algorithme risque par contre de tourner longtemps dans le cas où le nombre N est premier... Il est facile, et peu coûteux en temps machine, de tester au préalable si le nombre est premier ou composé : le test de Fermat fait alors l’affaire, à moindre frais. Par exemple si 2N Ŕ 1 n’est pas congru à 1 modulo N, alors N est composé.

Une des plus belles réussites de cette méthode a été la factorisation en 1980 par Brent et Pollard du gigantesque nombre de Fermat F8 = 228 + 1 = 2256 + 1, un entier de 78 chiffres.

On savait ce nombre composé depuis quelques années déjà, sans avoir mis en évidence un des ses facteurs. Brent et Pollard ont utilisé la méthode de la poêle à frire avec x0 = 3 et f(x) = x210 + 1. En deux heures d’ordinateur, ils mirent en évidence le facteur premier suivant de F8 :

1 238 926 361 552 897

On put ensuite montrer que l’autre facteur (de 62 chiffres) était premier... Épactant non ?

De nombreuses méthodes de factorisation, toutes plus ingénieuses les une que les autres Ŕ nous en avons étudié quelques-unes Ŕ ont vu le jour depuis le développement des ordinateurs. D’ailleurs, on ne peut qu’être émerveillé devant les performances de la fonction Factor de notre calculatrice, en sachant la difficulté réelle qu’il y a à factoriser un nombre entier un peu grand.

Le problème de la factorisation, au départ purement théorique, a revêtu depuis quelques années un intérêt stratégique accru, avec en particulier le développement de la cryptographie sur Internet.

Les méthodes modernes de cryptographie sont basées sur la quasi-impossibilité qu’il y a à factoriser un nombre entier produit de deux nombres premiers, dès que ceux-ci sont suffisamment grands.

Encore vaut-il mieux bien connaître les performances des principaux algorithmes de factorisations ! La méthode de Fermat par exemple nous montre qu’il serait bien imprudent de choisir les deux facteurs premiers trop proches !

Au hasard d’Internet, on peut suivre les défis des factorisations du moment, souvent liés d’ailleurs à la cryptographie RSA. Le dernier record date de mai 2005 avec la factorisation du « gigantesque » nombre RSA20020 (de 200 chiffres décimaux) :

RSA210, au moment où j’écris (juillet 2010) n’est toujours pas tombé !

20 Source Wikipedia http://fr.wikipedia.org/wiki/RSA-200.

Il ne faut pas non plus oublier les outils algébriques qui permettent sans efforts des factorisations intéressantes. Outre les classiques identités remarquables, on peut signaler :

  

       

10 2 8 6 4 2

2 2

2 4 3 2 3 2

1 1 1

1 5 7 5 1 10 2 2 1

a a a a a a

a a a a a a a a a

      

         

La vérification est immédiate avec le calcul formel.

L’intérêt de la deuxième écriture se perçoit lorsque 10a est un carré : la deuxième parenthèse est de nouveau une différence de deux carrés.

Factorisation de 1090+1

On peut commencer par utiliser la formule précédente avec a = 109 ; on est bien dans le cas où 10a est un carré ! Trois facteurs apparaissent, qui vont être traités séparément : par commodité, ils ont été nommés f1(x), f2(x) et f3(x).

Traitons f1(109) avec ptfact : les trois nombres qui apparaissent sont premiers.

Traitons f2(109) avec ptfact : 61 et 3541 sont premiers, reste le troisième facteur, composé.

Ce troisième facteur « tombe » avec la méthode de la poêle à frire.

Enfin f3(109), qui tombe aussi sous la conjonction de ptfact et de poele particulièrement efficace en la matière !

Bref, la factorisation de 1090 + 1 est terminée21. Alors que le factor de TI-Nspire ne donne pas le résultat, le nombre étant beaucoup trop grand !

21 Voir aussi la factorisation que je propose de 101000 Ŕ 1, en n’utilisant que les outils de logiciel TI-NSpire et le résultat algébrique

Chapitre

Vouloir faire des mathématiques avec une calculatrice, ou un ordinateur, semble relever de la gageure ! En effet, d’un côté, un mathématicien travaille de façon symbolique avec des nombres très variés, comme 1/3 ou 2 ou encore , c’est-à-dire des nombres qui bien souvent possèdent un nombre illimité de chiffres après la virgule. De l’autre, du fait des incontournables contraintes matérielles, les représentations de nombres dans un microprocesseur sont bien évidemment bornées.

Toute la question est de savoir comment le caractère intrinsèquement fini de la calculatrice peut rendre compte de l’infini des mathématiques. Nous nous proposons dans ce chapitre de donner quelques éléments de réflexion sur ces problèmes importants.

Sommaire

Chapitre 9. Arithmétique de la calculatrice... 151 1. Nombres machine et … nombres réels ... 152 1.1 Mode exact ou approché ? ... 152 1.2 Avec quels nombres une calculatrice travaille-t-elle ? ... 153 1.3 Et les nombres réels des mathématiciens ? ... 155 1.4 L’erreur d’affectation ... 157 2. Opérations en arithmétique à virgule flottante ... 162 2.1 Principe des calculs pour les quatre opérations ... 162 2.2 Les différences évanescentes ... 166 2.3 Dépassement de capacité ... 168 3. Un exemple de propagation des erreurs d’arrondi ... 170 3.1 De l’influence des opérations sur le résultat obtenu ... 170 3.2 Bilan de ces différents calculs… ... 171 3.3 Propagation des erreurs d’arrondi ... 172 3.4 Correction de l’arithmétique de la calculatrice ... 174 4. Résoudre une équation du second degré dans les réels ... 177 4.1 La méthode naturelle ... 177 4.2 Vers une fonction plus performante ... 177 BILAN : autour de l’ensemble  des nombres calculatrice ... 180

Dans le document MATHÉMATIQUES ET TI-Nspire (Page 145-158)