在给定正整数a,b的情况下求解ax+by=c (其中c为a,b的最大公约数,或者最大公约数的倍数,x,y为整数)求出对应x,y,可以采取矩阵去将一次次循环简化成一次次矩阵相乘,从而可以在求余的同时求出x,y matlab代码如下`
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