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 に答える