List 2个以上元素的Sage欧几里德算法
我试着做一个练习,得到一个数字列表,一个元素列表如下:如果a=[a0,a1,a2],那么有U=[u0,u1,u2],知道a0*u0+a1*u1+a2*u2=d,d是a的gcd 对于2个元素来说,这是一件非常简单的事情,因为Sage具有从a0和a1中检索u0和u1的功能:List 2个以上元素的Sage欧几里德算法,list,greatest-common-divisor,sage,List,Greatest Common Divisor,Sage,我试着做一个练习,得到一个数字列表,一个元素列表如下:如果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)。这意味着您可以重复使用内置函数来计算所需的系
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
它是有效的;)