主要参考了这篇文章:快速幂 蒙格马利算法
蒙哥马利(Montgomery)幂模运算是快速计算a^b%k的一种算法,是RSA加密算法的核心之一。
代码如下:
#include <iostream>
#include <cmath>
using namespace std;
int main(){
int a,b,c;
cin>>a>>b>>c;
while(a!=0||b!=0||c!=0){
int k=1,m=a%c;
while(b>1){
if(b&1!=0) //如果指数是奇数,则分治之后多出来一个
{
k=(k*m)%c;
}
m=(m*m)%c;
b/=2;
}
cout<<(k*m)%c<<endl;
cin>>a>>b>>c;
}
}
网友评论