JavaScript numbers are stored as 64-bit floats .
Math.pow(7, 16971) has an Infinity value because this value is too large for this view. In particular, it is larger than Number.MAX_VALUE , which is 1.7976931348623157e+308 .
The largest safe integer is Math.pow(2, 53) - 1) , aka Number.MAX_SAFE_INTEGER .
To work with large integers, you can use an integer size library of any size, for example big-integer :
const result = bigInt(7).modPow(16971, 25777); console.log(result.value);
Jsfiddle
joews source share