dポイントプレゼントキャンペーン実施中!

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();
}
}

このプログラム

A 回答 (1件)

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



素数かどうかを判定するのは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は素数である!
    • good
    • 0
この回答へのお礼

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

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

お礼日時:2010/08/30 19:34

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!