实现模块化幂算法的C ++程序

这是一个实现模块化幂运算算法的C ++程序。

算法

Begin
   function modular():
   //参数:base,exp,mod。
   //函数主体:
      initialize res = 1
      while (exp > 0)
         if (exp mod 2 == 1)
         res= (res * base) % mod
         exp = exp left shift 1
         base = (base * base) % mod
      return res.
End

示例

#include <iostream>
using namespace std;
long long modular(long long base, long long exp, int mod) {
   long long res = 1;
   while (exp > 0) {
      if (exp % 2 == 1)
         res= (res * base) % mod;
      exp = exp >> 1;
      base = (base * base) % mod;
   }
   return res;
}
int main() {
   long long b, e;
   int mod;
   cout<<"Enter Base : ";
   cin>>b;
   cout<<"Enter Exponent: ";
   cin>>e;
   cout<<"Enter Modular Value: ";
   cin>>mod;
   cout<<modular(b, e , mod);
   return 0;
}

输出结果

Enter Base : 7
Enter Exponent: 6
Enter Modular Value: 26
25