我正在尝试做一个获取数字列表的练习,并显示如下元素列表:如果 A=[a0,a1,a2] 那么有 U=[u0,u1,u2],知道 a0 *u0 + a1*u1 + a2*u2 = d 并且 d 是 A 的 gcd。
对于 2 个元素是一件非常简单的事情,因为 Sage 具有从 a0 和 a1 中检索 u0 和 u1 的功能:
A=[15,21]
(d,u0,u1)=xgcd(a[0],a[1])
我只是不明白我怎么能用 n 个元素的列表来做到这一点。
我正在尝试做一个获取数字列表的练习,并显示如下元素列表:如果 A=[a0,a1,a2] 那么有 U=[u0,u1,u2],知道 a0 *u0 + a1*u1 + a2*u2 = d 并且 d 是 A 的 gcd。
对于 2 个元素是一件非常简单的事情,因为 Sage 具有从 a0 和 a1 中检索 u0 和 u1 的功能:
A=[15,21]
(d,u0,u1)=xgcd(a[0],a[1])
我只是不明白我怎么能用 n 个元素的列表来做到这一点。
注意 gcd(a, b, c) = gcd((gcd(a, b), c)。这意味着你可以重复使用内置函数来计算你想要的系数。
你帮了我很多,来到这个:
x1=[1256,5468,5552,1465]
n=-1
for i in x1:
n=n+1
(d,w,x)=xgcd(x1[n-1],x1[n])
u1=[w,x]
n=n-2
while n>=0:
div=d
(d,u,v)=xgcd(x1[n],div)
position=0
for j in u1:
a=j*v
u1[position]=a
position=position+1
u1=[u]+u1
n=n-1
u1
它有效;)