#!/usr/bin/env python3 """Algorithme de calcul de l'inverse d'un ensemble Utilise les coefficients de Bezout donnés par l'algorithme d'Euclide étendu. """ import sys from typing import Optional import euclide_etendu def main(): if len(sys.argv) == 3: a = int(sys.argv[1]) n = int(sys.argv[2]) else: a = int(input("a : ")) n = int(input("n : ")) inverse = inverser(a, n) if inverse: print(f"L'inverse de {a} dans Z/{n}Z est {inverse}") else: print(f"{a} est non inversible dans Z/{n}Z") def inverser(a: int, n: int, quiet: bool = False) -> Optional[int]: # On veut associer le coefficient de Bezout u à a, donc l'ordre des paramètres # est important : pgcd, u = euclide_etendu.calculate(a, n, quiet=quiet) if pgcd != 1: return None inverse = (u + n) % n return inverse if __name__ == "__main__": main()