模幂运算常常作为一些算法的中间求解步骤,算法的思路十分巧妙并且高效。模幂运算的描述如下:

    已知b, e, m, 求c。形如:

    【原】模幂运算(Modular Exponentiation)算法

    其中,b<m (若b>m,可转换b为b%=m)

 

 

算法一:最显而易见的办法就是先求幂,再取模。例如

【原】模幂运算(Modular Exponentiation)算法,得到 c = 445。 【原】模幂运算(Modular Exponentiation)算法

注意到b=4为1位,e=13为2位,m=497为3位,c=445为3位,但是 【原】模幂运算(Modular Exponentiation)算法 为8位。这很可能造成溢出,或者因为大整数运算而缓慢。

可以采用快速求幂法求得 【原】模幂运算(Modular Exponentiation)算法,时间复杂度为 O(loge)

int e)
   2: {
if (0 == b || 1 == b || 0 == e)
return 1;
if (1 == e)
return b;
int n = e>>1;
int tmp = Power(b, n);
if (0 == (e&1))
return tmp*tmp;
else
return tmp*tmp*b;
  13: }

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-01-16
  • 2021-12-03
  • 2022-12-23
  • 2022-01-02
  • 2022-12-23
猜你喜欢
  • 2021-11-15
  • 2021-10-17
  • 2021-06-25
  • 2021-09-23
  • 2022-12-23
  • 2021-10-06
  • 2022-12-23
相关资源
相似解决方案