7 javascript math modulo infinity pow
是否有诀窍在Javascript中获取大数字的模数.我得到了modulo(7, 16971, 25777) 无穷无尽的7 ^ 16971mod25777 = NaN
function modulo (n, p, m){
var x = Math.pow(n, p);
var y = m;
var z = x%y;
alert(x);
return z;
}
Run Code Online (Sandbox Code Playgroud)
如果可以假设所有参数都是整数,那么可以使用数学"技巧" .
考虑以下模运算:
(a*x + y)%x
显然,a*x部分可以丢弃,以下内容成立:
(a*x + y)%x = y%x
考虑到这一点,我们可以假设大数字只是一个*x + y,我们可以在任何阶段执行模数,并且我们可以随意执行模数,因此,为了获得您想要的结果,请执行以下操作:
function modulo (n, p, m){
var result = 1;
while(p--) {
result = (result * n) % m;
}
return result;
}
console.log(modulo(7, 16971, 25777));Run Code Online (Sandbox Code Playgroud)