0
function Max(x)
    max := 0; L := [];
    for i := 1 to x do
        P2<x,y,z> := ProjectiveSpace(Rationals(),2);
        C_i := Curve(P2, x^3+y^3-i*z^3);
        E_i, C_itoE_i := EllipticCurve(C_i);
        gen := Generators(E_i);
        if max eq #gen then
            max := #gen;
        end if;
    end for;
    return max;
end function;

これ (Max(100)) を実行すると、max = 0 と表示されます。ただし、#gen = 1 と 2 が異なる場所にあるため、#gen > 0 であることはわかっています。max のローカライズに苦労しています。if ステートメントと for ステートメントの外側の max は、for ステートメントと if ステートメントの内側の max とは異なると見なされるため、max は更新されません。マグマ CAS 構文でこれを修正する方法がわかりません。この側面に関してマグマの構文を理解するのを手伝ってくれる人はいますか? local max; を入れてみました。ループ内とifステートメントですが、構文エラーが発生しました。

4

1 に答える 1

1

マグマについてはわかりませんが、他の手続き型コンピューター言語のようなものであれば、コードに単純なバグがあるようです。台詞:

    if max eq #gen then
        max := #gen;
    end if;

に変更する必要があります

    if #gen > max then
        max := #gen;
    end if;

大なり演算子の正しい構文を使用します。

于 2014-10-21T02:14:21.097 に答える