<分区>
在 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;
}
<分区>
在 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;
}
最佳答案
如果您可以假设所有参数都是整数,那么您可以使用一个数学“技巧”。
考虑以下模运算:
(a*x + y) % x
显然,a*x 部分可以舍弃,以下成立:
(a*x + y) % x = y % x
考虑到这一点,我们可以假设大数只是 a*x + y,并且我们可以在任何阶段执行模运算,而且次数不限,因此,得到你想要的结果,这样做:
function modulo (n, p, m){
var result = 1;
while(p--) {
result = (result * n) % m;
}
return result;
}
console.log(modulo(7, 16971, 25777));
关于javascript - 模 % 大数 - 无穷大错误 - Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40075279/