2009/11/18

PostScript 繰り返し

 

%!PS-Adobe-3.0
% P.30 2.9.2 回数による繰り返し
/power {
    3 dict begin
        /i exch def
        /n exch def
        /p 1 def
        i {
            /p p n mul def
        } repeat
        p
    end
} def

3 4 power == % 81

%!PS-Adobe-3.0
% P.30 2.9.3 制御変数による繰り返し
% 引数の全ての約数を出力する

/divisor {
    mod 0 eq
} def

/alldivisors {
    2 dict begin
        /max exch def
        1 1 max {
            /i exch def
            max i divisor {
                i ==
            } if
        } for
    end
} def

%!PS-Adobe-3.0
% P.31 2.9.4 条件による繰り返し

% 最大公約数を求める(ユークリッドの互助法)
%     ステップ1 与えられた二つの整数のそれぞれをn とm とする。
%     ステップ2 m が0 ならば計算を終了する。
%     ステップ3 n をm で除算したあまりをr とする。
%     ステップ4 m をn とする。
%     ステップ5 r をm とする。
%     ステップ6 ステップ2 に戻る。

/gcm {
    3 dict begin
        /m exch def
        /n exch def
        {
            m 0 eq {
                exit
            } if
            /r n m mod def
            /n m def
            /m  r def
        } loop
        n
    end
} def

54 36 gcm == % 18

0 件のコメント:

コメントを投稿