Comment un ordinateur calcule-t-il une très grande puissance en peu d'opérations ?
En élevant au carré plutôt qu'en multipliant pas à pas, on calcule 3¹³ en 5 multiplications au lieu de 12, et xⁿ en environ 2 log₂ n : un invariant démontre que l'algorithme est juste.
Grand oral session 2027 : exposé de 10 minutes debout, puis 10 minutes d'échange, sans calculatrice. Plan prévu pour 10 min.
Pourquoi cette question : un modèle d'introduction
Le jury attend que vous expliquiez pourquoi vous avez choisi la question. Inspirez-vous de ce modèle, mais racontez votre propre parcours.
En cryptographie, j'ai lu que les ordinateurs calculent des puissances avec des exposants de plusieurs centaines de chiffres. Multiplier un nombre par lui-même autant de fois prendrait plus de temps que l'âge de l'Univers. Pourtant mon téléphone le fait en un instant. J'ai découvert l'exponentiation rapide, qui repose sur une idée simple : élever au carré, et j'ai voulu prouver qu'elle donne le bon résultat.
L'enjeu et les notions du programme
Concevoir un algorithme efficace, démontrer sa correction par un invariant (récurrence) et mesurer son coût avec le logarithme.
Mathématiques
- Propriétés des puissances : x^(2k)=(x^(k))² (collège, seconde)
- Algorithmique : boucle while, division euclidienne par 2 en Python (seconde, première)
- Raisonnement par récurrence (terminale)
- Logarithme : nombre de chiffres binaires de n (terminale)
Le plan de l'exposé en 10 min
1. Introduction : la méthode naïve
1,5 minCalculer xⁿ en multipliant x par lui-même demande n-1 multiplications : 12 pour 3¹³, presque un million pour x^(1 000 000). Problématique : peut-on faire beaucoup mieux, et comment être sûr que le résultat est juste ?
2. L'idée : élever au carré
3 minx²=x× x, x⁴=(x²)², x⁸=(x⁴)² : trois multiplications donnent x⁸. Comme 13=8+4+1 (1101 en binaire), 3¹³=3⁸×3⁴×3 : 3 carrés et 2 produits, soit 5 multiplications au lieu de 12.
Règle récursive : xⁿ=(x^(n/2))² si n est pair, xⁿ=x×(x^((n-1)/2))² si n est impair.
3. L'algorithme et sa preuve
4 minOn part de r=1, b=x, e=n. Tant que e>0 : si e est impair, r← r× b ; puis b← b² et e←lfloore/2rfloor. On renvoie r.
Trace pour 3¹³ : (r,b,e)=(1,3,13)→(3,9,6)→(3,81,3)→(243,6 561,1)→(1 594 323,…,0). Et 3¹³=1 594 323.
Invariant : r× bᵉ=xⁿ à chaque tour. Vrai au départ (1× xⁿ). Si e=2k : r×(b²)^(k)=r× b^(2k). Si e=2k+1 : (rb)×(b²)^(k)=r× b^(2k+1). À la fin, e=0, donc r=xⁿ. Le nombre de tours est le nombre de chiffres binaires de n, environ log₂ n : au plus 2log₂ n multiplications, une quarantaine pour n=10⁶.
4. Conclusion
1,5 minL'ordinateur calcule xⁿ en environ 2log₂ n multiplications grâce aux carrés successifs, et l'invariant r× bᵉ=xⁿ prouve que le résultat est exact. J'ouvre sur le chiffrement RSA, qui calcule des puissances modulo un grand nombre : sans cet algorithme, il serait inutilisable.
Ce que j'écris au tableau
Pas de calculatrice ni de support numérique : un calcul clé écrit au tableau rend l'exposé concret et montre la solidité des connaissances.
(r,b,e): (1,3,13)→(3,9,6)→(3,81,3)→(243,6 561,1)→(1 594 323,·,0)
invariant : r× bᵉ=xⁿ
Conclusion : la réponse à la question
En élevant au carré et en lisant l'exposant en binaire, on calcule xⁿ en un nombre d'opérations de l'ordre de log₂ n au lieu de n. L'invariant, démontré comme une récurrence, garantit le résultat.
Les questions probables du jury
Pendant les 10 minutesd'échange, le jury vous fait préciser et approfondir, sur tout le programme de vos spécialités en lien avec la question.
Combien de multiplications pour x¹⁶ ?
Quatre carrés : x²,x⁴,x⁸,x¹⁶, contre 15 multiplications naïves.
Pourquoi l'algorithme s'arrête-t-il ?
e est un entier naturel qui diminue strictement (lfloor e/2rfloor<e pour e≥1).
Combien de chiffres binaires a un entier n ?
k chiffres si 2^(k-1)≤ n<2^(k), soit k=lfloorlog₂ nrfloor+1.
Est-ce le nombre minimal de multiplications ?
Pas toujours : x¹⁵ demande 6 multiplications par cette méthode, mais 5 suffisent (x²,x³,x⁶,x¹²,x¹⁵). L'algorithme est rapide sans être optimal.
Écrivez le test « e est impair » en Python.
e % 2 == 1, et la division entière s'écrit e // 2.
Combien de multiplications naïves et rapides pour x¹⁰⁰⁰ ?
Naïvement 999. En binaire, 1 000=(1111101000)₂ a 10 chiffres dont 6 égaux à 1 : 9 carrés et 5 produits, soit 14 multiplications (le premier produit, 1× b, ne compte pas).
Quel lien avec le raisonnement par récurrence ?
L'invariant se prouve exactement comme une hérédité : vrai avant un tour, il reste vrai après ; l'initialisation est l'état de départ.
Les pièges qui coûtent des points
- Écrire x^(a+b)=x^(a)+x^(b).
- Oublier de multiplier r quand l'exposant est impair.
- Prouver l'algorithme sur un exemple seulement.
Revoir les notions
Autres questions : raisonnement et algorithmes
Préparer l'oral, pas seulement le contenu
Gestion des 20 minutes de préparation, usage du tableau, posture debout, réponses au jury : la méthode complète, conforme aux règles de la session 2027.
Méthode : traiter une question de Grand oral →