主要參考了這篇文章:快速冪 蒙格馬利算法
蒙哥馬利(Montgomery)冪模運(yùn)算是快速計(jì)算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) //如果指數(shù)是奇數(shù)始藕,則分治之后多出來一個(gè)
{
k=(k*m)%c;
}
m=(m*m)%c;
b/=2;
}
cout<<(k*m)%c<<endl;
cin>>a>>b>>c;
}
}