我已讀到該擴展歐幾里得算法&模塊化逆,其中指出,它不僅計算部GCD(n,m)
而且a和b,使得a*n+b*b=1;
算法是通過這種方式描述:算法模塊化逆
- 寫下N,M,和兩個矢量(1,0)和(0,1)
- 除以兩個數的由較大較小 - 調用此 商q
- Subtrac TQ倍從較大的情況下(即,減小較大 模越小)
(我這裏有問題,如果我們用QN/m,則n-q*m is
不等於0?因爲Q = N/m;(假設n> m),那麼爲什麼需要這種操作呢? 然後4步驟
4.Subtract Q倍對應於從 矢量越小對應於較大 5.重複向量步驟2到4,直到結果爲零 6.Publish前述結果作爲GCD(N,M)
所以我對這個問題的問題,也就是如何可以實現代碼這個步驟是什麼?請幫幫我,我不知道如何開始,並從該點可我開始解決這樣的問題,爲了澄清結果,它應該看起來像這樣 這個算法的一個例子是下面的計算30 ^( - 1)(mod 53);
53 30 (1,0) (0,1)
53-1*30=23 30 (1,0)-1*(0,1)=(1,-1) (0,1)
23 30-1*23=7 (1,-1) (0,1)-1*(1,-1)=(-1,2)
23-3*7=2 7 (1,-1)-3*(-1,2)=(4,-7) (-1,2)
2 7-3*2=1 (4,-7) (-1,2)-3*(4,7)=(-13,23)
2-2*1=0 1 (4,-7)-2*(-13,23)=(30,-53) (-13,23)
從這我們可以看到,滿足gcd(30,53)= 1,並且重新排列方面,我們看到,1 = -13 * 53 + 23 * 30, 因此我們得出結論,30 ^( - 1) = 23(mod 53)。
什麼?我很困惑 – Grammin
欲瞭解更多信息,請參閱本網站http://userpages.umbc.edu/~rcampbel/NumbThy/Class/BasicNumbThy.html,並參見本節擴展歐幾里德算法與模塊逆向 –
告訴我們你的代碼迄今爲止。關於步驟3:q是n/m的整數部分,所以餘數n-q * m可以是非零的。 –