Sage上的欧几里得算法超过2个元素

时间:2012-11-21 00:46:42

标签: 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个元素列表来做这个。

2 个答案:

答案 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

它有效;)