0

我在 Maple 中为 Trial Divison Algorithm 提供了以下代码:

TrialDivision := proc( n :: integer )
    if n <= 1 then
            false
    elif n = 2 then
            true
    elif type( n, 'even' ) then
            false
    else
            for local i from 3 by 2 while i * i <= n do
                if irem( n,i) = 0 then
                        return false
                end if
            end do;
            true
     end if
end proc:

我从http://rosettacode.org/wiki/Primality_by_trial_division#MATLAB得到的。但是当我尝试运行它时,它给了我以下错误:错误,local过程体中的意外声明。

有谁知道我做错了什么?

4

1 回答 1

1

在整个过程体中允许本地声明是 Maple 语言最近的一项新功能。

比如说,你可以把它改成这样。

TrialDivision := proc( n :: integer )
    local i;
    if n <= 1 then
            false
    elif n = 2 then
            true
    elif type( n, 'even' ) then
        false
    else
            for i from 3 by 2 while i * i <= n do
                if irem( n,i) = 0 then
                        return false
                end if
            end do;
            true
     end if
end proc:
于 2013-11-05T01:36:53.490 回答