利用拓展欧几里得算法 对特定方程求解问题

在给定正整数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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值