Thursday 24 November 2011

the Sieve of Eratosthenes

matrix の扱いが強い scilab やけど,まあ,まだそこまで慣れてないので,
programming 自体のリバビリと, scilab の構文と馴染むのを目的に,なんか書きたいなー
…と思いながら脳内に matrix をふわふわさせてると思いついたので,
エラトステネスの篩を作ってみよう.

最初に変数として 指定するサイズの行列を宣言するやり方をまだ知らないので,
とりあえず一昨日覚えた zeros(m,n) で代用.数値をあとから書き換えることにしよう.

まあ,0(!?)~999 くらいで良かろうと思うので,10 毎に刻んだ行列を作る.
A=zeros(100,10);
for a=0:9,
    for b=0:9,
        for c=0:9,
            A(10*a+b+1,c+1)=100*a+10*b+c;
        end;
    end;
end;
 これで取り敢えず書けた.なんか C++ みたい.行列の扱いを勉強したら
もうちょっと簡潔に書けるんちゃうかなぁ.
なんか scilab らしさを出せそうな内容やけど全く出せなさげ.はぁ.

まあいいや.余りを返す関数は modulo らしい. % とかの方がすっきりしてる.

このへんを種に一応書いてみたのだが,正しく動いてくれないので デバッグが必要. 多分エラー吐いてるプログラム記録しとくのも後々復習に良さそうなのでおいておこう.

出力の時を考えて10個毎に区切った行列書いたけど,まずは一列のから書いてみようかなぁ.

No comments:

Post a Comment