1. 程式人生 > >利用拓展歐幾里得演算法解決特定方程求解問題

利用拓展歐幾里得演算法解決特定方程求解問題

在給定正整數a,b的情況下求解ax+by=c (其中c為a,b的最大公約數,或者最大公約數的倍數,x,y為整數)求出對應x,y,可以採取矩陣去將一次次迴圈簡化成一次次矩陣相乘,從而可以在求餘的同時求出x,y` i = input(‘輸入數字a’); j = input(‘輸入數字b’); k = j; count = 0; if i>j else count = 1; j = i; i = k; end a = [i,j]; C = eye(2); if mod(i,j) ==0 C = [0,1;1,1-(i/j)]; else while mod(i,j) ~= 0 A = version1(i,j); B = a * A; i = B(1); j = B(2); a = B; C = C*A; end end A if count == 1 x = C(4) y = C(3) else x = C(3) y = C(4) end

`定義方程函式:`` function A = version1( i,j) a = 0; b = 1; c = 1; d = -floor(i/j); A = [ a, b; c, d]; end