2015-12-04 2 views
-2

Я продолжаю получать error, ';' неожиданный в этом куске кленового кода. Я посмотрел и посмотрел, и просто не могу найти, где я ошибаюсь. Может ли кто-нибудь это заметить?Обнаружение ошибки в этом коде

QSFactorization := proc (n::(And(posint, odd)), mult::nonnegint := 0, { mindeps::posint := 5, c := 1.5 }) 

local mfb, m, x, fb, nfb, r, M, d; 

if isprime(n) then 
return "(n)" 
elif issqr(n) then 
return "(isqrt(n))"*"(isqrt(n))" 
elif n < 1000000 then 
return ifactor(n) 
end if; 

if mult = 0 then 
mfb := MultSelect(n, ':-c' = c) 
else mfb := [mult, FactorBase(mult*n, c)] 
end if; 

m := mfb[1]; 
if 1 < m then 
print('Using*multiplier; -1'); 
print(m) 

end if; 
x := m*n*print('Using*smoothness*bound; -1'); 

print(ceil(evalf(c*sqrt(exp(sqrt(ln(n)*ln(ln(n)))))))); 
fb := Array(mfb[2], datatype = integer[4]); 
nfb := ArrayNumElems(fb); 
print('Size*of*factor*base; -1'); 
print(nfb); 
r := Relations(x, fb, ':-mindeps' = mindeps); 
M := r[3]; print('Smooth*values*found; -1'); 
print(nfb+mindeps); 
print('Solving*a*matrix*of*size; -1'); 
print(LinearAlgebra:-Dimension(M));  
d := Dependencies(M); 
print('Number*of*linear*dependencies*found; -1'); 
print(nops(d)); 
print('Factors; -1'); 
FindFactors(n, r, d) 
end proc 

Я бы очень признателен за понимание.

ответ

1

Основная проблема заключается в том, что вы используете неправильные кавычки внутри своих заявлений печати. Это является недопустимым,

print('Using*multiplier; -1'); 

Вы используете одиночные правые кавычки (клеща), которые в Maple используется для unevaluation. В этом случае точки с запятой внутри ваших операторов печати являются синтаксическими ошибками.

Вместо этого используйте либо двойные кавычки, либо одиночные левые кавычки. Первая ограничивает строку, а вторая ограничивает имя. Например,

print("Using*multiplier; -1"); 

print(`Using*multiplier; -1`); 

Если вы решите пойти с названием кавычки, то команда print будет prettyprint выход в Maple GUI с именем в наклонным шрифтом по умолчанию, но вы не будете видеть котировки в вывод.

Если вы решите пойти со строковыми кавычками, то команда print покажет кавычки в выходном файле, но по умолчанию будет использовать вертикальный римский шрифт.

Некоторые другие комментарии/ответы (с удалены) на ваш пост предположить, что вам не хватает выписки терминатор (двоеточие или точка с запятой) для этих двух утверждений,

print(m) 
FindFactors(n, r, d) 

Это не так. Эти заявления появляются непосредственно перед end if и end proc соответственно, и в качестве таких терминаторов для них необязательны. Лично мне не нравится кодирование Maple с такими необязательными экземплярами терминатора, которые не учитываются, поскольку это может привести к путанице, когда вы добавляете промежуточные строки или передаете код кому-то другому и т. Д.

Смежные вопросы