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

完成イメージはこんな感じです。「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」はサイト内のどのページでもフリーリンクです。