次幂函数取模算法
次冪函數取模算法
高次冪函數取模算法
在平常的工作學習中,我們經常需要用到求取一個數字或者冪運算的余數,尤其在密碼學中最為常用的RSA算法就經常要用到這種運算,我們稱之為高次冪函數的取模運算。
在本篇文章中,將會首先介紹運用程序求解高次冪函數取模的暴力求解方法,然后針對暴力方法算法效率低下的缺點,給出一種快速的取模算法。
暴力取模算法
由于我們的高次冪函數往往擁有很高的冪,而我們在計算機中只有int、float、double、long long這幾種變量類型,遠遠不能滿足我們對于大數字運算的要求,從而導致數據溢出無法完成運算。
所以這里我們需要在每次迭代取模的過程中進行取模運算,從而保證數據不會溢出。代碼如下:
這種算法的正確性毋庸置疑,但是如果冪指數太大的話,需要耗費的時間就更非常多,直接導致運算效率低下,所以只適用于指數不大的情況下使用,下面我們要講解的蒙哥馬利算法就很好地解決了這個問題,而且該算法非常簡單,效率極高,完全可以手動演算。
蒙哥馬利算法
蒙哥馬利算法是一種快速的大數(通常達到幾百個二進制)的模乘算法,由彼得·蒙哥馬利在1985年提出。
下面直接放代碼:
使用這個算法,即便是處理很大的數據都可以快速的求得余數,非常好用,這里想說,學好數學才是真的生產力!
?Github?:?https://github.com/haoyuanliu
?個人博客:?http://haoyuanliu.github.io/
個人站點,歡迎訪問,歡迎評論!
總結
- 上一篇: MyBatis之优化MyBatis配置文
- 下一篇: 数据结构实验之排序四:寻找大富翁