javascript 数字太大无法取模

javascript number too big for modulo

只是一个简单的问题。

我正在尝试用 js 计算一些东西:

print(pow(49, 37) % 77)

这将打印 22,而不是实际应为 (14)。

我只是不确定这是因为它太大而无法准确计算,还是我遗漏了一些东西而只是做错了。

如果问题太大了,我该如何解决? (顺便说一下,将其更改为 BigNumber 不会解决问题)

谢谢:)

这是密码学中的常见操作 你可以做的是自己迭代计算功率,并在每次迭代中减少它 mod 77。下面的函数 powmod 是您必须要做的,剩下的就是使代码段具有交互性。

function powmod(a, b, mod){
  if(b < 1){
    return 1;
  }
  const t = powmod(a, b >> 1, mod);
  if(b & 1){
    return (a * t * t) % mod;
  }else{
    return (t * t) % mod;
  }
}

const a = document.getElementById('a');
const b = document.getElementById('b');
const c = document.getElementById('c');
const d = document.getElementById('d');
function update(){
  d.value = powmod(parseInt(a.value), parseInt(b.value), parseInt(c.value))
}

[a,b,c].map(e => e.addEventListener('change', update))
update()
pow(<input type="number" min="0" max="999999" step="1" id="a" value="49">, 
<input type="number" min="0" max="999999" step="1" id="b" value="37">) % 
<input type="number" min="0" max="999999" step="1" id="c" value="77"> = 
<input type="number" min="0" max="999999" step="1" id="d" disabled>