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。我很难本地化最大值。它认为 if 和 for 语句中的 max 与 for 和 if 语句中的 max 不同,因此不会更新 max。我不确定如何在岩浆 CAS 语法中纠正这一点。有人可以帮助我理解这方面的岩浆语法吗?我尝试放置本地最大值;在循环和 if 语句内,但给了我语法错误。
我不知道magma,但如果它像其他程序计算机语言一样,那么看起来你的代码中有一个简单的错误。 台词:
if max eq #gen then
max := #gen;
end if;
应改为
if #gen > max then
max := #gen;
end if;
使用大于运算符的正确语法。