幂运算是公钥密码术中使用次数最多的操作。以下哪个选项是计算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贡献。
这个问题的测验