📜  门| Gate IT 2007 |问题17

📅  最后修改于: 2021-06-29 18:55:06             🧑  作者: Mango

幂运算是公钥密码术中使用次数最多的操作。以下哪个选项是计算b n mod m,0≤b,n≤m所需的乘法数的最严格上限?
(A) O(登录)
(B) O(√n)
(C) O(n /登录)
(D) O(n)答案: (A)
解释:

此问题可以使用分而治之范式解决

算法 :

Binary_exp(b,n)                            // Compute bn mod m

{

    if(n == 0)

        Return 1;

    Else if(n == 1)

        Return b mod m;

    Else

    {

        Half = Binary_exp(b,n/2);

        if(n%2 == 0)                                // n is even

            Return (Half*Half) mod m;

        Else                                    // n is odd

            Return (((Half*Half) mod m)*n) mod m;

}

}          

用于计算上述给定算法的时间复杂度的递归关系为
T(n)= T(n / 2)+常数=(log2n)

该解决方案由Pranjul Ahuja贡献。
这个问题的测验