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 语法中对此进行纠正。有人可以帮我理解这方面的 Magma 语法吗?我试着把本地最大值;在循环和 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 回答