●素数表

最近興味があるのが「数論」です。 小学校か中学のころ、「アルキメデスの定理」とか「素数」などを習いましたが、数年前に「フェルマーの最終定理」が証明されたこともあり、ときどき入門書なんかをめくっていました。 読んでいると、わりと面白いのです。なんか自分でもできそうな錯覚に陥りそうです。 そこで、素数を調べるツールを作ってみることにしました。

●完成イメージ

完成イメージ 完成イメージはこんな感じです。「n=」の所に数字を入れて、「prime check」を押すと素数かどうかの判定をします。「generate table of prme」を押すと、その数字までの素数を列挙します。 出力される部分にはNSTextViewを使いました。
整数を文字列に型変換する方法が分からず調べてみると、「initWithFormat:」というのが使えそうです。

●速度が...

実際に動かしてみると10000までの1229個の素数を作るのに3秒、10万までの9592個の素数を求めるのに27秒かかります。Windowsの同じような機能のソフトが1秒以内で出力するのに対し、かなり遅いのでガッカリです。きっと作り方が悪いのでしょう。
ソースの抜粋はこんな感じです。
- (IBAction)myAction:(id)sender
{
    int i, j, k;
    int primeCheck = 0;
    k = [inputNum intValue];
    [outputTable insertText: [[NSString alloc]initWithFormat: @"2\n"]];
    for(j = 3; j <= k; j = j + 2){
        primeCheck = 0;
        for (i = 3; i <= sqrt(j); i = i + 2)
        {
            if((j % i) == 0){
                primeCheck = 1;
            }
        }
        if(primeCheck == 0)
            [outputTable insertText: [[NSString alloc]initWithFormat: @"%d\n", j]];
    }
}
まだまだ、改良の余地が残っています。

Copyright (C) 1996- TUNNEL
「TUNNEL's PC」はサイト内のどのページでもフリーリンクです。
SiteTUNNEL「TUNNEL's PC」>素数表