modpow 大整数 javascript

编程入门 行业动态 更新时间:2024-10-04 03:29:18

modpow 大<a href=https://www.elefans.com/category/jswz/34/1770288.html style=整数 javascript"/>

modpow 大整数 javascript

我在寻找一个好的 JavaScript 算法,因为我用 node.js 尝试过这个:

function modpow_3(a,n, module){
var u = BigInt('1');
var e = equals(a, u);
if( e) return a;
if(equalsZero(a)) return a;
if(pair(n)){
    x= modpow_2(a, (divide(n, BigInt('2'))));
    return mod(multiply(x,x), module);
}else{      
    x= modpow_2(a, (divide(subs(n, BigInt(1) ), BigInt('2'))));
    return mod(multiply(multiply(x,x), a), module);
}

}

但是我有一个错误: RangeError:超出最大调用堆栈大小

回答如下:

尝试这样的事情......

const prime = 101n
function modPow(expo, base, p=prime) {
  // "expo" needs to be of type BigInt
    let x = BigInt(base) % p, res = expo & 1n? x: 1n
    do {
        x = x**2n % p
        if (expo & 2n) res = res * x % p
    } while (expo /= 2n)
    return res
}
const res = modPow(9n, 2n)

更多推荐

modpow 大整数 javascript

本文发布于:2024-05-31 04:16:59,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1771264.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:整数   modpow   javascript

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!