如題,其中p和q都是素數,而x是數值十分大的合數,則p^x mod q的一種解法可為:
第一步,可把x寫成a*b的形式,即p^x=(p^a)^b,其中p^a是可以通過簡單的人為計算得出的並且滿足p^a>q,設c=p^a,則p^x通過降次得到c^b;
第二步,把c展開,寫成c=dq+e的形式,則c^b=(dq+e)^b,由二項式定理可知c^b≡e^b(mod q),則問題轉化成了求解e^b(mod q)的問題;
第三步,用迭代的思想,重複第一步和第二步,直到p和x都為素數,這時候就很容易得解了。
例子:求解2^100 mod 7。
解:2^100=16^25=(7*2+2)^25,則2^100=(7*2+2)^25≡2^25(mod 7)
2^25=32^5=(7*4+4)^5,則2^25=(7*4+4)^5≡4^5(mod 7)
4^5=1024,1024=146*7+2,即1024≡2(mod 7)
所以,2^100≡2(mod 7),即2^100 mod 7=2。
若有不足之處還請大家批評指正,謝謝大家!
關於Xilinx SDK工具的使用問題求解
在使用xilinx的sdk開發工具時遇到以下幾個問題 1.目前我使用的過程沒有連線開發板,僅僅是在電腦上面進行執行,目前寫了乙個例程 經過修改和build沒有報錯,但是run的時候不能編譯成功,目前遇到的情況如下 想求助一下這個問題要如何解決 2.想求教不使用開發板的時候如何執行和debug程式,目...
關於揹包問題的求解思路
求解揹包問題 首先理清是0 1揹包還是完全揹包,確定for迴圈,然後寫狀態方程 518 零錢兌換ii 377 組合總和 139單詞拆分 322零錢兌換 這三種屬於完全揹包問題。對於377這種,屬於有序放入,要求揹包在外迴圈,物品在內迴圈,dp i dp i num 如果不是有序放入,物品作為外迴圈,...
關於素數的求解
質數 prime number 又稱素數,有無限個。乙個大於1的自然數,除了1和它本身外,不能被其他自然數整除,換句話說就是該數除了1和它本身以外不再有其他的 因數。求解整數n之前的所有素數及總數 include stdio.h include math.h int main if c sqrt i...