DH應用 求餘演算法改進

2021-05-08 09:10:06 字數 341 閱讀 5285

dh演算法裡需要求(n^x)%p;

其中p為大素數,n跟x都是大數。

那怎樣求(n^x)%p呢?

我有一篇文章裡講過思路,今天找出以前的**,貼出來。

當然,這裡的用的遞迴實現,改進的是y過大,迴圈時間複雜度過高的問題,此遞迴**時間複雜度只有o(logy).

不過如果使用gmp大數庫來做運算(這裡資料型別為int64只是為了表達演算法思想,實際應該是大數型別),無法呼叫函式,也就是無法遞迴。

我們可以模擬這段**的遞迴特性,先通過對y不斷/2或者-1再/2的做法,把遞迴y的特性存到乙個棧裡,然後可以讀取棧裡的運算特性,模擬出遞迴。由於此模擬演算法使用的是gmo庫,則不貼出來了。

寫了乙個超快的求餘演算法,求驗證

前幾天,在做 有道難題 的第一次練習賽中的第二題時,最終寫了個自認為正確且速度超快的演算法,但是我不敢肯定其正確性,也無法進行有效的驗證,故現發帖廣徵大家的意見,並幫我驗證或修改此演算法,若已有類似的演算法也望大家能貼出來以共勉。此題大概要求如下 1 a b為正整數,其中,a 0,b 2 31 2 ...

求公共子串問題以及其改進演算法

求公共子串問題以及其改進演算法 問題的提出 設計乙個演算法,求兩個字串s1,s2的最長公共子字串的長度 例如字串 shaohui huishao 的最長公共子字串為 shao 因此,結果為4.最早看到這個問題,大約是 年前在csdn程式設計師雜誌的程式設計擂台上面,後來又在程式設計師考試的題目當中遇...

Floyd演算法(改進後求最小環權值)

int gra maxs maxs dis maxs maxs 返回值為最小環權值.int floyd int n return mincircle 求當前最小環權值在更新dis之前是因為。當前的k不應該被連入dis i j 中。也就是說當前迭代求mincircle是對之前已求dis i j 包含k...