我正在尝试进行一个运动,得到一个数字列表,显示一个像这样的元素列表:如果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个元素列表来做这个。
答案 0 :(得分:2)
请注意,gcd(a,b,c)= gcd((gcd(a,b),c)。这意味着您可以重复使用内置函数来计算所需的系数。
答案 1 :(得分:0)
你帮助了我很多,来到这里:
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
它有效;)