2013-12-18 10 views
1

다음 코드와 성가신 오류가 있습니다. 예기치 않은 In Maple 오류가 계속 발생합니다. 누구든지 내가 잘못하고 있다는 것을 알 수 있습니까? 왜냐하면 나는 몇 시간 동안 화면을 쳐다 보았 기 때문에 여전히 그것을 보지 못했기 때문입니다. 두 번째오류, "["예기치 않은 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) < 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: 

는 :

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: 

답변

1

앞 라인에 대한 종결 없습니다. 일반 텍스트 1D 메이플 표기법 코드, 이전 행으로

end if 

는 성명 터미네이터 (콜론이나 세미콜론 중 하나를) 누락되었습니다. 그것이 오류의 원인입니다.

몇 가지 점에 유의하십시오. 귀하의 코드는 end if, end do, end proc 등의 줄 앞에 터미네이터가 필요하지 않음을 이용합니다. 그 습관의 위험성 중 하나가 나타날 수 있습니다.이 줄 사이에서 새 문장을 편집하고 추가 할 때 그리고 end을 추적하는 경우 더 이상 "마지막"인 행에 명령문 종료자를 추가해야합니다. 어떤 사람들은 일을 단순하게 유지하고 현행 라인이 필요하든 없든 항상 문장 터미네이터를 사용하는 것만으로 돈을 번다.

+0

Perfect! 제게 두 번째 것을 보시면 저에게 같은 문제가 생길 수 있습니다. 매번 x : = mul (j, j = rels [1] ~ deps [i]) 코드를 제거합니다. y : = isqrt (mul (j, j = rels [2] ~ deps [i])); 그것은 오류를 표시하지 않지만 필요합니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까? – user3092043

+0

'j = rels [1] ~ deps [i]'가 문제입니다. 무엇이든 유효한 구문이 아닙니다. 그게 뭘 의도 한거야? 그 오른쪽 ('='기호의 오른쪽에있는 것이 무엇이든)은 범위 (예를 들어'a..b'가'a''와'b''가 정수로 평가됩니다) 또는리스트 또는 세트. – acer