Adloun

Exponentiation modulaire rapide

Exercice · OCaml (option informatique), chapitre 10 — Recherche et dichotomie

Énoncé

Écrire puissance_mod x n m calculant en , sans jamais manipuler de très grands nombres.

Corrigé

let rec puissance_mod x n m =
  if n = 0 then 1 mod m
  else
    let p = puissance_mod x (n / 2) m in
    let p2 = (p * p) mod m in
    if n mod 2 = 0 then p2
    else (p2 * x) mod m

Même schéma que l'exponentiation rapide, mais on réduit modulo m après chaque produit : les valeurs restent bornées par m, ce qui évite les dépassements de capacité même pour de très grands exposants. C'est le cœur des calculs en arithmétique modulaire (cryptographie). multiplications.

Les autres exercices de ce chapitre Le cours du chapitre

Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.