米勒拉宾算法检测质数JavaScript实现

2021/9/30 20:12:26

本文主要是介绍米勒拉宾算法检测质数JavaScript实现,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

/**
 * 计算a**b(mod c)
 * @param {bigInt} a 底数
 * @param {bigInt} b 指数
 * @param {bigInt} c 模
 * @returns {binInt}结果
 */
function fastPowerMod(a, b, c){
    let res = 1n 
    a %= c

    while (b) {
        if(b&1n){
            res = (res*a)%c
        }
        a = a*a%c
        b>>=1n
    }
    return res
}


/**
 * 检测一个大数是否是素数
 * @param {bigInt} n 被检测的大数
 * @returns {boolean} 是否是素数
 */
function isPrime(n){
    // 检测20次
    let a = n
    for(let i=0; i<20; i++){
        a >>= 1n// a取1/2n
        if(fastPowerMod(a, n-1n, n)!==1n){
            return false
        }
    }
    return true
}


这篇关于米勒拉宾算法检测质数JavaScript实现的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程