Cryptography “错误”;[“在枫树中出人意料

Cryptography “错误”;[“在枫树中出人意料,cryptography,maple,Cryptography,Maple,我有以下代码和恼人的错误,“[”意外的枫叶错误不断出现。有人看到我做错了什么,因为我一直盯着屏幕看了几个小时,仍然看不到它 Relations:=proc(n::posint,fb::Array,{mindeps::posint:=5,verbose::truefalse:=false}) local s,np,f,j,g,f1,f2,i; s:=isqrt(n); np:=ArrayNumElems(fb); f:=[]; j:=1; g:=np+mindeps; while nops(f)

我有以下代码和恼人的错误,“[”意外的枫叶错误不断出现。有人看到我做错了什么,因为我一直盯着屏幕看了几个小时,仍然看不到它

Relations:=proc(n::posint,fb::Array,{mindeps::posint:=5,verbose::truefalse:=false})
local s,np,f,j,g,f1,f2,i;
s:=isqrt(n);
np:=ArrayNumElems(fb);
f:=[];
j:=1;

g:=np+mindeps;
while nops(f) < g do
  f1:=FBTrialDivision(n,s-j+1,fb);
  f2:=FBTrialDivision(n,s+j,fb);
  f:=[op(f),f1,f2];
  j:=j+1
end do;
if verbose then
  printf("smooth",g,2*j-2)
else
  print("");
  print(2*j-2)

end if
[Vector([seq(f[i][1], i = 1..nops(f))]),Vector([seq(f[i][2], i = 1..nops(f))]),
LinearAlgebra:-Transpose(Matrix([seq(f[i][3], i = 1..nops(f))]))]

end proc:
Relations:=proc(n::posint,fb::Array,{mindeps::posint:=5,verbose::truefalse:=false})
局部s,np,f,j,g,f1,f2,i;
s:=isqrt(n);
np:=阵列数(fb);
f:=[];
j:=1;
g:=np+mindeps;
而nops(f)
第二个:

FindFactors:=proc(n,rels,deps)
local fact, i, x, y;
fact:=1;
for i to nops(deps) while fact = 1 or fact = n do
  x:=mul(j,j=rels[1]~deps[i]);
  y:=isqrt(mul(j,j=rels[2]~deps[i]));
  fact:=igcd(x+y,n)
end do;
if fact <> 1 and fact <> n then
  ``(fact)*``(iquo(n,fact))
else
  print("no trivial")
end if;
end proc:
FindFactors:=proc(n,rels,deps)
局部事实,i,x,y;
事实:=1;
对于i到nops(deps),而事实=1或事实=n do
x:=mul(j,j=rels[1]~deps[i]);
y:=isqrt(mul(j,j=rels[2]~deps[i]);
事实:=igcd(x+y,n)
结束do;
如果是事实1和事实n,那么
``(事实)*``(iqo(n,事实))
其他的
打印(“不平凡”)
如果结束;
结束程序:

前一行没有终止符

作为明文1D Maple符号代码,前一行

end if
缺少语句终止符(冒号或分号)。这是导致错误的原因


我注意到,在一些地方,您的代码利用了这样一个事实,即在
结束if
结束do
结束proc
等前面的行上不需要终止符。您可能看到了这种习惯的危险之一:当您在这样一行和它后面的
结束之间编辑并添加新语句时,y您必须记住在不再是“last”的行中添加语句终止符。有些人发现,无论当前行是否需要,保持简单并始终使用语句终止符都是值得的。

完美!你能看看我刚才添加的第二个语句吗,因为它给我带来了同样的麻烦。每次我删除代码x:=mul(j,j=rels[1]~deps[I]);y:=isqrt(mul(j,j=rels[2]~deps[I]));,它没有显示错误,但我需要它。我做错了什么?
j=rels[1]~deps[I]
是个问题。它的语法对任何东西都无效。你这么做的目的是什么?它的右边(无论
=
符号
右边的是什么)应该是一个范围(例如,
a..b`其中
a
b
计算为整数)或列表或集合。