こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

javaで素数を探すプログラム。

javaで素数を探すプログラム。
初歩的なことかと思いますが、助言をお願いします。
if(a[i-1]) ←この部分がわかりません。これはどのような条件がなのでしょうか?


class Prime {
public static void main(String[] args) {
int max = 100; // 素数を探す数の最大値
boolean[] a = new boolean[max]; // 素数かどうか判定する配列

// 配列の初期化
for(int i = 0; i < max; i++)
a[i] = true;

// 素数かどうか判定
for(int i = 2; i < max; i++) {
if(a[i-1]) {
for(int j = 2; i*j <= max; j++)
a[i * j - 1] = false;
}
else
continue;
}

// 結果を表示
for(int i = 1; i < max; i++) {
if(a[i])
System.out.print((i + 1) + " ");
}
System.out.println();
}
}

このプログラム

投稿日時 - 2010-08-29 21:22:55

QNo.6144785

困ってます

質問者が選んだベストアンサー

アルゴニズムが分かっているかですかね・・・

素数かどうかを判定するのはmaxまでの数から1を除いた(max-1)個の数なので
iが素数かどうかの判定結果をa[i-1]に入れてあります

1 配列の初期化ですべてが素数と仮定

2 if(a[i-1])でiが素数かどうかを判定
2.1 素数だった場合MAXまでのiの倍数の数の判定結果をfalseに設定する
2.2 素数じゃなかったら次の数
[補足]iが素数でなかった場合i-1までに判定がfalseに設定されているはずである

3 結果表示
a[i]がtrueならi+1は素数である!

投稿日時 - 2010-08-29 23:54:39

お礼

回答ありがとうございます。
なるほど。つまり
if(a[i-1] == true)
ってことなんですかねぇ・・・?勉強になりました!

それとアルゴニズムは知らないっすw

投稿日時 - 2010-08-30 19:34:41

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問