diff --git a/src/exp_rapide.py b/src/exp_rapide.py new file mode 100644 index 0000000000000000000000000000000000000000..fe3353d7c9d1f6c55114dcdc57dae365df2be171 --- /dev/null +++ b/src/exp_rapide.py @@ -0,0 +1,28 @@ +def exp_rapide(nb: int, exp: int, mod: int) -> int: + list_exp = [int(x) for x in bin(exp)[:1:-1]] + + # Créer la liste de l'exp decomposé + a = [] + a.append(nb ** 1 % mod) + for x in range(1, len(list_exp)): + a.append(a[x-1]**2 % mod) + + + # Calcule l'exp rapide + out = 1 + for index, valeur in enumerate(list_exp): + if valeur == 1: + out *= a[index] % mod + + return out % mod + + + +if __name__ == '__main__': + + u = 68393426 + n = 124344401 + d = 29995379 + + # print(exp_rapide(6, 392, 13)) + print(exp_rapide(u, d, n))