2

線形ディオファントス方程式を解くために、Python でアルゴリズムをコーディングしようとしています。

紙でテストしたのでアルゴリズムは正しいと思いますが、実行すると奇妙な値が返されます。

私のコード:

def solve_Dioph(a,b,c):
    m1=1
    m2=0
    n1=0
    n2=1
    r1=a
    r2=b
    while r1%r2!=0:
        q=r1/r2
        aux=r1%r2
        r1=r2
        r2=aux
        aux3=n1-(n2*q)
        aux2=m1-(m2*q)
        m1=m2
        n1=n2
        m2=aux2
        n2=aux3
    return m2*c,n2*c;

7 つの変数と 3 つの補助変数を使用します。ペンと紙でテストした後、次の値を使用します。

a=65 b=14 c=4

私は得る

m2=-3*4 and n2=14*4

ただし、実行すると:

solve_Dioph(65,14,4)

戻り値:

(-227/9, 16393/126)
4

1 に答える 1

4

(Python 2 ではなく) Python 3 を使用していると思います。Python 3 では、2 つの整数を で割ると/float の結果が生成されます。//ただし、演​​算子を使用して Python 2 の動作を強制することができます。次の行を変更してみてください。

q=r1/r2

に:

q=r1//r2
于 2015-12-16T23:46:35.070 に答える