/** * @param {number} base * @param {number} exponent * @param {number} m * @return {number} */ export default function modularExponent(base, exponent, m) { let x = base; let y = exponent; let res = 1; const p = m; x %= p; while (y > 0) { if (y & 1) res = (res * x) % p; y >>= 1; x = (x * x) % p; } return res; }