J'ai besoin de calculer a*a
mod n
mais a
est assez grand, ce qui provoque un dépassement lorsqu'on le met au carré. Faire ((a % n)*(a % n)) % n
ne fonctionne pas car (n-1)2 peut provoquer un dépassement. C'est en C++ et j'utilise int64_t
Éditer:
Valeur de l'exemple : a = 821037907258 et n = 800000000000, ce qui provoque un dépassement si on le met au carré.
J'utilise DevCPP et j'ai déjà essayé de faire fonctionner des bibliothèques de grands entiers sans succès.
Éditer 2:
Non, il n'y a pas de motif à ces nombres.