Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
List 2个以上元素的Sage欧几里德算法_List_Greatest Common Divisor_Sage - Fatal编程技术网

List 2个以上元素的Sage欧几里德算法

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=[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
它是有效的;)