javascript - 模 % 大数 - 无穷大错误 - Javascript

标签 javascript math modulo pow infinity

<分区>

在 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/

相关文章:

math - 用cuda计算二进制NxN矩阵的行列式

math - 我如何在 MATLAB 中使用最小二乘近似?

javascript - 为什么要同时设置className和class?

javascript - 在 Javascript 中循环 JSON。对象中的对象?

javascript - 无法读取未定义的 mongoDB NodeJS 的 'insert' 属性

python - 如何检查时间戳是否是整整一个小时

c++ - 无法在 C++ 中为 SAFECRAC SPOJ 正确使用 MODULO 运算?

javascript - 使用 javascript 将表单提交到 iframe 目标

algorithm - 需要一些帮助来理解这个关于最大化图形连通性的问题

modulo - 为什么模数运算符很慢?