重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

素数判定するプログラムで、for文が3つありますが
それを1回のみのループで素数が出力されるようにしたいです。
どなたかご回答よろしくお願いいたします。


class Prime {
public static void main(String[] args) {
int max = 300;
boolean[] a = new boolean[300];

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.println((i + 1) + " ");

}
System.out.println();
}
}

A 回答 (2件)

for文を二つ減らしました。


1. trueとfalseを入れ替えることで最初のtrueを代入するfor文を除去
2. 素数を判定しながら表示することで最後に素数を表示するfor文を除去

class Prime {
public static void main(String[] args) {
int max = 300;
boolean[] a = new boolean[300];

for(int i = 2; i < max; i++) {
if(!a[i-1]) {
System.out.println(i + " ");
for(int j = 2; i*j <= max; j++)
a[i * j - 1] =true;
}else
continue;
}
}
}
    • good
    • 0

for文は4つあるように見えます。

    • good
    • 0
この回答へのお礼

4つでした。
すいません
これをfor文を減らしたいのですが、やり方ありますか?

お礼日時:2016/01/12 21:03

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